周振林 周振林
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • Spring
  • SpringMVC
  • Mybatis
  • 安装教程
  • 其他教程
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏

周振林

IT界的小学生
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • Spring
  • SpringMVC
  • Mybatis
  • 安装教程
  • 其他教程
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • Spring

  • SpringMVC

    • SpringMVC路径映射
    • SpringMVC请求处理
    • SpringMVC响应请求
    • SpringMVC拦截器
    • SpringMVC过滤器
    • SpringMVC异常
    • SpringBoot数据校验
      • SpringBoot数据校验
        • 案例
  • Mybatis

  • 安装教程

  • 其他教程

  • 后端
  • SpringMVC
周振林
2025-11-27
目录

SpringBoot数据校验

# SpringBoot数据校验

步骤

  1. 导入校验包
  2. JavaBean 编写校验注解
  3. 使用 @Valid 告诉 SpringMVC 进行校验,效果:如果校验不通过,目标方法不执行
  4. 编写一个全局异常处理器,处理 MethodArgumentNotValidException(),封装校验结果

# 案例

pom.xml

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13

User类


@Data
public class User {

    private Integer id;

    @NotBlank(message = "姓名不能为空")
    private String name;

    @NotNull(message = "年龄不能为空")
    @Max(value = 150, message = "年龄不能超过150岁")
    @Min(value = 0, message = "年龄不能小于0岁")
    private Integer age;

    @Email(message = "邮箱格式不正确")
    private String email;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

UserController

@RestController
public class UserController {

    @PostMapping("/user")
    public R add(@RequestBody @Valid User user){
        System.out.println("进行保存操作。。。");
        return R.ok();
    }
}
1
2
3
4
5
6
7
8
9

GlobalExceptionHandler

// 全局异常处理器
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 进行前端数据校验异常处理,给前端返回统一格式
     *
     *   {
     *       "code": 500,
     *       "msg": "校验失败",
     *       "data": {
     *           "name": "姓名不能为空",
     *           "age": "年龄不能超过150"
     *       }
     *   }
     */

    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public R methodArgumentNotValidException(MethodArgumentNotValidException ex) {
        //1、result 中封装了所有错误信息
        BindingResult result = ex.getBindingResult();

        List<FieldError> errors = result.getFieldErrors();
        Map<String, String> map = new HashMap<>();
        for (FieldError error : errors) {
            String field = error.getField();
            String message = error.getDefaultMessage();
            map.put(field, message);
        }

        return R.failed(map, "参数错误");
    }

    // 最终的兜底
    @ExceptionHandler(Throwable.class)
    public R error(Throwable e) {
        System.out.println("【全局】 - Exception处理" + e.getClass());
        return R.failed(e.getMessage());
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Last Updated: 2025/12/02, 11:22:00
SpringMVC异常
Mybatis CRUD

← SpringMVC异常 Mybatis CRUD→

最近更新
01
查询优化N+1
12-02
02
项目代码组织方式
12-02
03
Mybatis分页插件
12-02
更多文章>
Copyright © 2019-2025 鲁ICP备19032096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×