Spring JPA的映射非常强大,基本上只用注解就能完成非常复杂的关联和校验,但是光引入Spring JPA包的话实体类上的验证注解是不会生效的,百度也搜不到,基本都是说在MVC层面加@Valid注解校验(那有M用,如果逻辑层数据处理出错就绕过校验了),我们要做的是在持久化实体类那一刻做校验,把好最终的关口,所以要想让注解生效,只需要加入以下maven依赖即可。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.7.Final</version>
</dependency>
另外附上官方DOC注解说明
注解 | 说明 |
---|---|
@AssertFalse | 取值必须为false |
@AssertTrue | 取值必须为true |
@DecimalMax | 取值必须小于或等于指定数值(注解取值为字符串型) |
@DecimalMin | 取值必须大于或等于指定数值(注解取值为字符串型) |
@Max | 取值必须小于或等于指定数值(注解取值为数值型) |
@Min | 取值必须大于或等于指定数值(注解取值为数值型) |
@Digits | 校验整数位数(integer)和小数位数(fraction) |
@Future | 取值必须是一个将来的日期 |
@Past | 取值必须是一个过去的日期 |
@NotNull | 取值不为null |
@Null | 取值必须为null |
@NotBlank | 不允许为null且去除前后空格后不允许为空 |
@NotEmpty | 不允许为null且不允许为空 |
@Pattern | 取值必须满足指定正则表达式 |
@Size | 取值必须在指定边界之间(包含边界) |