常用JSR-303数据校验
下载 JSR 303 – Bean Validation 规范
在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。
Bean Validation 中内置的 constraint
Constraint | 详细信息 |
---|---|
@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) | 被注释的元素必须符合指定的正则表达式 |
Hibernate Validator 附加的 constraint
Constraint | 详细信息 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range | 被注释的元素必须在合适的范围内 |
常用 constraint
Constraint | 详细信息 |
---|---|
@NotNull(message="名字不能为空") | private String userName; |
@Max(value=120,message="年龄最大不能查过12e") | private int age; |
@Email(mes sage="邮箱格式错误") | private String email; |
空检查 | |
@Null | 验证对象是否为null |
@NotNull | 验证对象是否不为null,无法查检长度为e的字符串 |
@NotBlank | 检查约束字符串是不是Null还有被Trim的长度是否大于e,只对字符串,且会去掉前后空格。 |
@NotEmpty | 检查约束元素是否为NULL或者是EMPTY. |
Booelan检查 | |
@AssertTrue | 验证Boolean 对象是否为true |
@AssertFalse | 验证 Boolean 对象是否为false长度检查 |
@size(min=,max=) | 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 |
@Length(min=,max=) | Validates that the annotated string is between min and max included. |
日期检查 | |
@Past | 验证 Date和Calendar对象是否在当前时间之前 |
@Future | 验证Date和Calendar对象是否在当前时间之后 |
@Pattern | 验证 String对象是否符合正则表达式的规则 |
.....等等
除此以外,我们还可以自定义一些数据校验规则