hibernate-validator
常用注解
注解 | 验证类型 | 说明 |
---|---|---|
@AssertFalse | 布尔类型 | 值是否为false |
@AssertTrue | 布尔类型 | 值是否为true |
@NotNull | 所有 | 值是否不为null |
@Null | 所有 | 值是否为null |
@Min | 整型或整型字符串 | 值是否大于等于min的value |
@Max | 整型或整型字符串 | 值是否小于等于max的value |
@DecimalMin | 整型或整型字符串 | 值是否大于等于decimalMin的value |
@DecimalMax | 整型或整型字符串 | 值是否小于等于decimalMax的value |
@Digits | 整型或整型字符串 | 验证值的整数位和小数位的上限 |
@Size | 字符串、collection、map、数组 | 验证字符串长度、集合大小等是否在指定区间之内 |
@Past | 时间日期类型 | 时间是否在过去 |
@PastOrPresent | 时间日期类型 | 时间是否在过去或现在 |
@Future | 时间日期类型 | 时间是否在未来 |
@FutureOrPresent | 时间日期类型 | 时间是否在未来或现在 |
@Length | CharSequence子类 | 值的长度是否在指定区间内 |
@NotEmpty | CharSequence子类、Collection、Map、数组 | 值不为null且不为空(字符串长度不为0,集合大小不为0) |
@NotBlank | 字符类型 | 值不为空(去除首位空格后长度为0) |
@Range | 整型或整型字符串 | 值在指定范围之间 |
字符类型 | 值是否为email | |
@Pattern | 字符类型 | 值是否符合正则 |
@Negative | 整型或整型字符串 | 值是否为负数 |
@NegativeOrZero | 整型或整型字符串 | 值是否为负数或0 |
@Positive | 整型或整型字符串 | 值是否为正数 |
@PositiveOrZero | 整型或整型字符串 | 值是否为正数或0 |
@Valid | 任何对象类型 | 指定级联验证 |
@Constraint | 注解 | 指定自定义注解的校验逻辑 |
@Validated | 对象属性或方法对象参数 | 和Valid相同,并可以指定分组查询(spring提供) |
自定义校验
创建自定义校验注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
//指定验证器
@Constraint(validatedBy = DemoValidator.class)
public @interface IsDemo {
//在违反约束时返回的错误消息
String message();
//指定约束所属分组
Class<?>[] groups() default {};
//用来定义严重程度
Class<? extends Payload>[] payload() default {};
}
验证器
/**
* 实现ConstraintValidator
* 泛型一:使用此验证器的注解
* 泛型二:验证类型(多种类型要写多个实现类分别对应类型)
*/
public class DemoValidator implements ConstraintValidator<IsDemo, String> {
//初始化
@Override
public void initialize(IsCron isCron) {
}
//验证逻辑
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
try {
return CronExpression.isValidExpression(value);
} catch (Exception e) {
return false;
}
}
}