简介
SpringBoot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
一、使用实例
1.项目结构 2.User类
import lombok. Data;
import javax. validation. constraints. NotEmpty;
@Data
public class User {
@NotEmpty ( message = "登陆账号不能为空" )
private String accountName;
@NotEmpty ( message = "登陆密码不能为空" )
private String password;
@NotEmpty ( message = "用户姓名不能为空" )
private String userName;
}
3.UserController 类 @Validated
注解开启校验
import com. csdn. study. model. User;
import org. springframework. validation. annotation. Validated;
import org. springframework. web. bind. annotation. *;
@CrossOrigin
@RequestMapping ( "/user" )
@RestController
public class UserController {
@PostMapping ( "/selectUser" )
public User selectUser ( @RequestBody @Validated User user) {
return user;
}
}
4.Postman测试 成功 **失败:**userName为空,没有通过校验,后期我们可以配置统一异常处理捕获 MethodArgumentNotValidException这个异常,通过调用getBindingResult().getFieldError().getDefaultMessage()方法获取我们配置的异常信息,将其反馈给前端
二、 @validated注解说明
空校验 针对类型 说明 @Nullr 任何类型 校验对象必须为空 @NotNull 校验对象不为空 校验对象不为空,不能校验字符串长度为0的对象 @NotBlank 字符串 只对字符串有效,校验字符串去掉前后空格后长度不为0 @NotEmpty 字符串、集合、数组 校验对象不能为空 (字符串长度不为0、集合大小不为0)
boolean校验 针对类型 说明 @AssertTrue 布尔 校验boolean类型必须为true @AssertFalse 布尔 校验boolean类型必须为false
日期校验 针对类型 说明 @Past 日期类型 校验必须是一个过去的日期 @Future 日期类型 校验必须是一个将来的日期
数值校验 针对类型 说明 @Min 数字类型 校验必须是一个数字,其值必须大于或等于指定的最小值 @Max 数字类型 校验必须是一个数字,其值必须小于或等于指定的最大值 @DecimalMin 数字类型 校验必须是一个数字,其值必须大于或等于指定的最小值 @DecimalMax 数字类型 校验必须是一个数字,其值必须小于或等于指定的最大值 @Digits(integer=,fraction=) 数字类型 校验必须是一个数字,interger指定整数精度,fraction指定小数精度 @Range(min =,max = ) 数字类型、字符串 校验对象的值在min和max区间内 @Length(min =,max = ) 数字类型 校验对象的值的长度在min和max区间内 @Size(min =,max = ) 数字类型 校验对象的值在min和max区间内,如字符长度、集合大小
其他校验 针对类型 说明 @Email 字符串 校验对象的值必须是Email类型,也可以通过regexp和flag指定自定义的email格式 @Pattern 字符串 校验对象的值必须符合指定的正则表达式 @CreditCardNumber 数字类型、字符串 校验对象的值必须是信用卡类型 @URL 字符串 校验对象的值必须是URL地址