Java 系统学习 | Springboot 数据验证

本篇使用 Springboot3 框架,IDEA2022 编辑器,java17 版本。

上一篇 的基础上进行优化


添加依赖

pom.xml 中添加依赖,记得更新 maven

        <!-- validation 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

pojo 类中添加验证规则

/pojo/User.java 文件

  • message 自定义验证提示信息

  • regexp 定义正则

package com.holly.pojo;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class User {
    @NotNull
    private int id;
    @NotEmpty(message = "用户名不能为空")
    private String username;
    @NotEmpty(message = "密码不能为空")
    private String password;
    @NotEmpty(message = "别名不能为空")
    @Pattern(regexp = "^\\S{1,10}$")
    private String nickname;
    @NotEmpty
    @Email
    private String email;
    private String userPic;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

请求参数添加 @Valid 注解

/controller/UserController 中的 add 方法

    @PostMapping
    public String add(@Valid User user) {
        userService.add(user);

        return "添加成功";
    }

全局异常处理

创建包目录 exception,新建 exception/ValidationException.java

package com.holly.exception;

import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class ValidationException {

    @ExceptionHandler(Exception.class)
    public Object handleException(Exception e) {
        e.printStackTrace();

        return StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作失败";
    }
}

常用验证注解

  • @NotNull 不为 null

  • @Null 必须是 null

  • @NotBlank 不能为空字符串或全空格

  • @NotEmpty 字符串不能为空

  • @Max 最大值

  • @Min 最小值

  • @Length(min=,max=) 长度范围

  • @Size(min=,max=) 长度范围

  • @Email 邮箱

  • @URL url

  • @Pattern 正则验证

  • @AssertFalse boolean 值必须是 false

  • @AssertTrue boolean 值必须是 true

posted @ 2024-01-30 15:06  菜乌  阅读(38)  评论(0编辑  收藏  举报