1. org.apache.commons.lang3.Validate;
- 不支持注解的形式,
- 可用方法巨多
举例
Validate.notNull(obj, "object can't be null"); Validate.notBlank(fieldName, "fieldName can't be blank");
可以使用的方法如图
2. org.hibernate.validator.constraints
- 注解形式使用
- 主要在应用在DAO中
可以使用的方法如图
常用注解
Constraint | 详细信息 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range | 被注释的元素必须在合适的范围内 |
3. javax.validation.constraints(推荐)
- 注解形式使用
- 主要应用在业务中
可以使用的方法如图
常用注解
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"; }
可以使用的方法如图