个人博客项目笔记_02

时间:2024-04-13 15:26:26

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 提供的用于构建查询条件的包装器,它们之间的主要区别在于构建查询条件的方式不同。

  1. LambdaQueryWrapper
    • LambdaQueryWrapper 是基于 Lambda 表达式的方式构建查询条件的,可以使用 Lambda 表达式直接引用实体类的属性。
    • 通过 Lambda 表达式引用属性,可以避免硬编码字段名称,使代码更加清晰易懂。
    • 由于使用了 Lambda 表达式,编译器可以在编译时进行类型检查,避免一些常见的拼写错误或属性不存在的问题。