JAVA全系列 教程
3762个小节阅读:7094.8k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
添加依赖
除了项目正常的依赖以外,额外需要导入Hibernate-validator依赖和EL表达式依赖。
xxxxxxxxxx
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.0.Final</version>
</dependency>
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<version>5.0.0-M1</version>
</dependency>
在实体类属性上添加注解
示例中只是以NotNull和Length和Range进行举例。
(1)@NotNull中message是可选属性,如果设置了message,在违反规则后日志会打印message中内容
(2)@Length是设置字符串长度。
(3)@Range 设置取值范围。可以用在int类型属性上。
所以name必须不能是null的,且长度是2-6位。age取值范围必须是1~150
这些注解虽然可以放在方法、属性、其他注解、构造方法、参数上。我们多把这些注解放在实体类的属性上面,每个实体类属性都支持配置多个注解,这些注解同时生效。
xxxxxxxxxx
@Data
public class People {
@NotNull(message = "姓名不能是null")
@Length(min = 2,max = 6,message = "长度应该是2-6位")
private String name;
@Range(min=1,max=150)
private int age;
}
编写测试类,测试hibernate-validator
xxxxxxxxxx
@Test
void testHibernateValidator(){
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
People people = new People();
Set<ConstraintViolation<People>> constraintViolations = validator.validate(people);
for (ConstraintViolation<People> constraintViolation : constraintViolations) {
System.out.println("错误:" + constraintViolation.getMessage());
}
}
运行后控制台输出信息
xxxxxxxxxx
错误:不能为null
错误:需要在1和150之间