四款数据校验的类(Validate)

1. org.apache.commons.lang3.Validate;

  • 不支持注解的形式,
  • 可用方法巨多 举例
    Validate.notNull(obj, "object can't be null");
    Validate.notBlank(fieldName, "fieldName can't be blank");
    

可以使用的方法如图

图片pic1

2. org.hibernate.validator.constraints

  • 注解形式使用
  • 主要在应用在DAO中

可以使用的方法如图
图片pic1

常用注解

Constraint 详细信息
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内

3. javax.validation.constraints(推荐)

  • 注解形式使用
  • 主要应用在业务中

可以使用的方法如图
图片pic1

常用注解

Constraint 详细信息  
2020/02/10 mybatis  
@Null 被注释的元素必须为 null  
@NotNull 被注释的元素必须不为 null  
@AssertTrue 被注释的元素必须为 true  
@AssertFalse 被注释的元素必须为 false  
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值  
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值  
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值  
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值  
@Size(max, min) 被注释的元素的大小必须在指定的范围内  
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内  
@Past 被注释的元素必须是一个过去的日期  
@Future 被注释的元素必须是一个将来的日期  
@Pattern(value) 被注释的元素必须符合指定的正则表达式  

定制化注解

@Price 的 annotation 部分

// @Max 和 @Min 都是内置的 constraint
@Max(10000)
@Min(8000)
@Constraint(validatedBy = {})
@Documented
@Target( { ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Price {
String message() default "错误的价格";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

@Status 的 annotation 部分

@Constraint(validatedBy = {StatusValidator.class})
@Documented
@Target( { ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Status {
String message() default "不正确的状态 , 应该是 'created', 'paid', shipped', closed'其中之一";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

4. org.springframework.util.Assert;

  • 不支持注解的形式,
  • 可用方法巨多 举例
    @RequestMapping(value = "/", method = RequestMethod.GET)
      public String list(Model model, HttpSession session, HttpServletRequest request) {
          User user = getUserFromSession(session);
          org.springframework.util.Assert.notNull(user,"未登录用户,非法操作");
          Page<Order> page = new Page<>(request);
          orderService.findOrders(page, user.getId());
          model.addAttribute("page", page);
          return "order/orderList";
      }
    

    可以使用的方法如图 图片pic4

参考链接