1. 统一异常处理
不管是controller层还是service,dao层,都有可能报异常,如果是预料中的异常,可以直接捕获处理,如果是意料之外的异常,需要统一进行处理,进行记录,并给用户提示相对比较友好的信息。
package com.cherriesovo.blog.handler;
import com.cherriesovo.blog.vo.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
//对加了@Controller注解的方法进行拦截处理 AOP的实现
@ControllerAdvice
public class AllExceptionHandler {
//进行异常处理,处理Exception.class的异常
@ExceptionHandler(Exception.class)
@ResponseBody //返回json数据
public Result doException(Exception ex){
ex.printStackTrace();
return Result.fail(-999,"系统异常");
}
}
2. 首页-最热文章
2.1 接口说明
接口url:/articles/hot
请求方式:POST
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
返回数据:
{
"success": true,
"code": 200,
"msg": "success",
"data": [
{
"id": 1,
"title": "springboot介绍以及入门案例",
},
{
"id": 9,
"title": "Vue.js 是什么",
},
{
"id": 10,
"title": "Element相关",
}
]
}
2.2 Controller
ArticleController:
@PostMapping("hot")
public Result hotArticle(){
int limit = 5;
return articleService.hotArticle(limit);
}
2.3 Service
LambdaQueryWrapper<Article>
和QueryWrapper<Article>
都是 MyBatis-Plus 提供的用于构建查询条件的包装器,它们之间的主要区别在于构建查询条件的方式不同。
- LambdaQueryWrapper
:
LambdaQueryWrapper
是基于 Lambda 表达式的方式构建查询条件的,可以使用 Lambda 表达式直接引用实体类的属性。- 通过 Lambda 表达式引用属性,可以避免硬编码字段名称,使代码更加清晰易懂。
- 由于使用了 Lambda 表达式,编译器可以在编译时进行类型检查,避免一些常见的拼写错误或属性不存在的问题。