前言
在我们日常开发中,接口入参的实体类使用注解进行验证一些简单的值,可以减少我们很多的代码量,这里就来总结一下我们可能会经常用到的一些验证注解。
1、validation-api
引入依赖包
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
注解 | 使用范围 | 说明 |
---|---|---|
@Max(value=10) | 数字类型,包括包装类,但是不能为null | 最大值为10,只能是一个整数 |
@Min(value=10) | 数字类型,包括包装类,但是不能为null | 最小值为10,只能是整数 |
@DecimalMax(value=“10.1”) | 数字类型,不为null | 最大值为10.1,参数为字符串 |
@DecimalMin(value=“10.1”) | 数字类型,不为null | 最小值为10.1,参数为字符串 |
@NotNull | 包装类型,实体,对进基本数据类型无效 | 实体不能为空 |
2、hibernate-validator
依赖引入
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
注解 | 使用范围 | 说明 |
---|---|---|
@NotBlank | String | 字符串不为null且不是"" |
@NotEmpty | String,Collection(List/Set) | 集合长度不为0,且字符串长度大于零 |
@DecimalMax(value=“10.1”) | 数字类型,不为null | 最大值为10.1,参数为字符串 |
@DecimalMin(value=“10.1”) | 数字类型,不为null | 最小值为10.1,参数为字符串 |
@NotNull | 包装类型,实体,对进基本数据类型无效 | 实体不能为空 |
注意事项
- 启用验证必须使用@Valid或者@Validated标记
- 如果实体中存在另一个实体A,则实体中的属性A也需要使用@Valid或者@Validated标记
- @Valid或@Validated标记在方法或方法所属类上无效
public class User{
@NotBlank(message="姓名不能为空")
private String name;
private String mobile;
@Valid
private User user;
}
// 验证生效
public void test1(@Valid User user){
}
// 验证不生效
@Valid
public void test2(User user){
}