Hibernate Validator
是基于注解发挥作用的,下面是一个使用示例:
package com.inspur.validator.model;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
import java.util.List;
/**
* @author mark
* @date 2020/10/28 10:38
*/
@Data
public class Department {
/**
* 主键
*/
private Integer id;
/**
* 预算
* 非null
* 值为false,则抛出异常,异常信息为:只可以为true
*/
@NotNull
@AssertTrue(message = "只可以为true")
private Boolean locatedInJiNan;
/**
* 部门名称
* 非null、非空、非纯空格字符串
*/
@NotBlank
private String name;
/**
* 预算
* 最大值100,最小值1
*/
@Min(1)
@Max(100)
private Double budget;
/**
* 描述
* 字符长度在[1, 100]之间
*/
@Length(min = 1, max = 100)
private String description;
/**
* 部门员工
* 列表非null、非空
* 最小员工数50,最大员工数300
*/
@NotEmpty
@Size(min = 50, max = 300)
private List<Employee> employees;
}
1.1.validation-api标准注解(基于JSR380)
这些标准注解,定义在validation-api jar包内,javax.validation.constraints文件夹下。不同版本的jar包,包含的注解不同。
注解 | 作用 | 作用对象 | 使用示例 |
---|---|---|---|
@AssertTrue | true | boolean 或Boolean | @AssertTrue(message = "只可以为true") |
@AssertFalse | false | boolean 或Boolean | |
@Max | 最大值 | Number | @Max(value = 256) |
@Min | 最小值 | Number | @Min(value = 2) |
Positive | 正数 | Number | |
PositiveOrZero | 正数或零 | Number | |
Negative | 负数 | Number | |
NegativeOrZero | 负数或零 | Number | |
@Null | null | Object | |
@NotNull | 非null | Object | |
@NotEmpty | 非null、非空 | String 、Collection 、Map 、Array | |
@NotBlank | 非null、非空、非纯空格字符串 | String | |
@Size | 限制字符长度或集合容量 | String 、Collection | @Size(min = 1, max = 128) |
@Past | 当前时间之前 | 日期 | |
@PastOrPresent | 当前时间或当前时间之前 | 日期 | |
@Future | 当前时间之后 | 日期 | |
@FutureOrPresent | 当前时间或当前时间之后 | 日期 | |
@Pattern | 正则表达式 |
1.2.hibernate-validator扩展注解(基于版本6.0.17.Final)
注解 | 作用 | 作用对象 | 使用示例 |
---|---|---|---|
@Length | 字符串长度 | String | @Length(min = 10, max = 20) |
@Range | 数值范围 | Number 或值为数值的 String | @Range(min = 1, max = 100) |
@UniqueElements | 集合中每个元素唯一 | Collection |
**