springboot中@Validated注解进行校验数据,附详细说明
注解说明
空校验 | 针对类型 | 说明 |
---|
@Null | 任何类型 | 校验对象必须为空 |
@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地址 |
@Validated的分组
首先需要根据自己的分组新建分组接口
public abstract interface Insert {}
public abstract interface Update {}
然后在字段上加入相应的分组
@ApiModelProperty(value="用户名")
@NotBlank(message="用户名不能为空" ,groups = {Insert.class, Update.class})
@Length(min=2,max=20,message = "用户名长度需要在{min}和{max}之间",groups = {Insert.class, Update.class})
private String username;
最后需要在controller添加你要使用哪个分组进行校验
@ApiOperation(value = "新增用户", notes = "新增用户")
@SysLog("新增用户")
@PostMapping
public Result save(@RequestBody @Validated({Insert.class}) UserDTO users) {
return Result.ok(usersService.save(userMps.toDO(users)));
}