@NotBlank为Hibernate Validator 常用注解用法 一般与@RequestBody @Valid 联合使用

    1. @Null   被注释的元素必须为 null    
    2. @NotNull    被注释的元素必须不为 null    
    3. @AssertTrue     被注释的元素必须为 true    
    4. @AssertFalse    被注释的元素必须为 false    
    5. @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
    6. @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
    7. @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
    8. @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
    9. @Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
    10. @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
    11. @Past   被注释的元素必须是一个过去的日期    
    12. @Future     被注释的元素必须是一个将来的日期    
    13. @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式   
    14. @NotBlank(message =)   验证字符串非null,且长度必须大于 @Email  被注释的元素必须是电子邮箱地址    
    15. @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
    16. @NotEmpty   被注释的字符串的必须非空   
    17. @Range(min=,max=,message=)  被注释的元素必须在合适的范围内
    18. @NotBlank    被注释的字符串的必须非空
    19. @URL(protocol=,host=, port=,regexp=, flags=)    被注释的字符串必须是一个有效的url
    20. @CreditCardNumber    被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性

      ————————————————
      原文链接:https://blog.csdn.net/qq_37101384/article/details/10082137
    21. 校验一个字段必须是合法的身份证号码
    22. 首先定义一个校验注解

      /**
       * 身份证校验
       */
      @Target({ ElementType.FIELD})
      @Retention(RetentionPolicy.RUNTIME)
      @Constraint(validatedBy = IdentityConstraintValidator.class)//用哪个校验器校验
      public @interface IdentityNo {
          String message() default "身份证号码不符合规则";
          Class<?>[] groups() default { };
          Class<? extends Payload>[] payload() default { };
      }
      校验逻辑,我们只需要去实现 ConstraintValidator 这个接口重写 isValid 方法即可

      /**
       * 身份证约束逻辑判断
       */
      public class IdentityConstraintValidator implements ConstraintValidator<IdentityNo, String> {
          @Override
          public boolean isValid(String value, ConstraintValidatorContext context) {
              return check(value);//返回身份证号码是否符合规则(自己实现校验逻辑)
          }
      }


      这样一来,我们自己的注解就定义好了,把它用在需要验证的字段上就可以了。

      @Data
      public class OrderRequest {
          //自己定义的注解
          @IdentityNo
          private String merchantCode;
          private String memberCode;
      }

       

      测试结果:

      {
          "path": "/order/submit",
          "error": "Bad Request",
          "message": "merchantCode:身份证号码不符合规则",
          "status": 400
      }

      hibernate-validator 配合统一异常处理简直是完美呀,这样绝大多数问题在前端传参的时候就能暴露出来了~~
posted @ 2022-06-21 11:05  风骚羊肉串  阅读(391)  评论(0编辑  收藏  举报