Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
属性规则注解
@Null | 所注解的元素值为null |
@NotNull | 所注解的元素值不能为null |
@NotBlank | 所注解的元素值有内容,仅包含空格、制表符(tab键)的字符串视为空 |
@Size | 所注解的元素必须是String、集合或数组,且长度大小需保证在给定范围之内 |
@AssertFalse | 所注解的元素必须是Boolean类型,且值为false |
@AssertTrue | 所注解的元素必须是Boolean类型,且值为true |
@Max | 所注解的元素必须是数字,且值小于等于给定的值 |
@Min | 所注解的元素必须是数字,且值大于等于给定的值 |
@DecimalMax | 所注解的元素必须是数字,且值小于等于给定的值,通常用于BigDecimal类型 |
@DecimalMin | 所注解的元素必须是数字,且值大于等于给定的值,通常用于BigDecimal类型 |
@Digits | 所注解的元素必须是数字,且值必须是指定的位数 |
@Future | 所注解的元素必须是将来某个日期 |
@Range | 所注解的元素需在指定范围区间内 |
@Past | 所注解的元素必须是某个过去的日期 |
@PastOrPresent | 所注解的元素必须是过去某个或现在日期 |
@Pattern | 所注解的元素必须满足给定的正则表达式 |
@Email | 所注解的元素需满足Email格式 |
示例:
实体类
public class User{
@NotNull(message = "id不能为空")
@Min(value = 1,message = "id不能小于1")
private Integer id;
private String username;
@Size(min = 6, max = 18, message = "密码长度必须大于等于6,且小与等于18")
private String password;
@Min(value = 1,message = "年龄不能小于1")
@Max(value = 100,message = "年龄不能大于100")
private Integer age;
private String gender;
@Email(message = "邮箱不符合规则")
private String email;
}
Controller
@PostMapping("/add")
public String addUser(@Validated @RequestBody User user){
userMapper.addUser(user);
return "true";
}
参数校验注解@Valid与@Validated
两者区别主要有三个方面:
1、分组
@Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不
的验证机制。没有添加分组属性时,默认验证没有分组的验证属性。
2、作用域
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
3、嵌套
@Validated:用在方法入参上无法单独提供嵌套验证功能。不能用在成员属性(字
段)上,也无法提示框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
@Valid:用在方法入参上无法单独提供嵌套验证功能。能够用在成员属性(字段)
上,提示验证框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。