hibernate-validator

Author Avatar
丁起男 07月 06,2020
  • 在其它设备中阅读本文章

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时间日期类型时间是否在未来或现在
@LengthCharSequence子类值的长度是否在指定区间内
@NotEmptyCharSequence子类、Collection、Map、数组值不为null且不为空(字符串长度不为0,集合大小不为0)
@NotBlank字符类型值不为空(去除首位空格后长度为0)
@Range整型或整型字符串值在指定范围之间
@Email字符类型值是否为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;
        }
    }
}