首先,用@NotEmpty、@NotNull、@NotBlank之前需要了解一下JSR
JSR是Java Specification Requests的缩写,意思是Java 规范提案,更多详情参考:https://baike.baidu.com/item/jsr/4388424
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
在使用前需要引入jar包
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.10.Final</version>
</dependency>
或
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
好,了解的说完了,现在说三者区别:
@NotNull:适用于所有类型,修饰的对象不能为null;
@NotEmpty:一般常用于验证集合类型的对象,对象不为null,且size > 0;
@NotBlank:一般常用于验证String类型的对象,对象不为null,且不为空串(""),不为只有空格的字符串(" "),其实相当于执行了trim();
补充:使用此类注解的时候,一定要在搭配@Validated或@Valid一起使用,不然此类注解不会生效哟~
另外,如果验证的对象里存在集合,我在验证集合的同时,也要验证集合里的属性值是否符合要求,那么请采用以下方式