Springboot使用validator进行参数校验
添加数据效验
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.15.Final</version>
</dependency>
单字段效验
- 添加效验注解
@Data
public class Users {
private int id;
@NotBlank(message="用户名不能为空")
@Length(min = 1, max = 20, message = "用户名长度需要在20个字以内")
private String name;
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
private String phone;
@Pattern(regexp="^[0-9]{4}-[0-9]{2}-[0-9]{2}$",message="出生日期格式不正确")
private String birthday;
@Email(message="请输入正确的邮箱")
private String email;
@Size(min = 1, max = 5)
private List<String> strings;
}
- 其他常用的注解
注解 | 说明 |
---|---|
@Range(min=最小值, max=最大值) | 验证注解的元素值在最小值和最大值之间 |
@Min(value=值) | 验证注解的元素值大于等于@Min指定的value值 |
@Max(value=值) | 验证注解的元素值小于等于@Max指定的value值 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@Future | 验证注解的元素值(日期类型)比当前时间晚 |
@AssertFalse | 可以为null,如果不为null的话必须为false |
@AssertTrue | 可以为null,如果不为null的话必须为true |
@Digits | 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内 |
级联效验
带校验的成员里存在级联对象时,也进行校验
@Data
public class Users {
@Valid
private Collections collections;
}
分组效验与组序列
分组效验:将实体类的属性进行分组,标记后,在进行效验时,可以指定分组进行效验
组序列:指定分组执行效验的顺序,Default.class为默认分组
/****新增时,需要效验的字段分组****/
public interface AddGroup {
}
/****更新时,需要效验的字段分组****/
public interface UpdateGroup {
}
@Data
public class Collections {
@NotBlank(message="修改时,id不能为空!",groups = UpdateGroup.class)
private int id;
@NotBlank(message="新增时,name不能为空!"