您的位置:首页 > 编程语言 > Java开发

Java-HibernateValidation校验bean

2015-11-10 13:31 369 查看
本人菜B一个,所谓好笔头不如烂记性,但是我有一个好记性,所以还是拿个烂笔头记下来,方便以后使用

使用HibernateValidation之前,首先我们需要导入5个包,一个都不能少

也就是我从官网下载的压缩包下hibernate-validator-5.1.3.Final\dist\lib\required这个路径下的五个jar包,他们当时的版本分别是

classmate-1.0.0.jar

javax.el-2.2.4.jar

javax.el-api-2.2.4.jar

jboss-logging-3.1.3.GA.jar

validation-api-1.1.0.Final.jar

好了,之后我们就可以写测试了

----------------------------User类--------------------------
//导入这个包
import javax.validation.constraints.NotNull;
public class User {
private String name;
@NotNull(message = "姓名不能为空!")
public String getName() {//get方法上面加标签,注意是GET
return name;
}
public void setName(String name) {
this.name = name;
}
}
----------------------------测试类--------------------------
public static void main(String[] aaa) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
User person = new User();
Set<ConstraintViolation<User>> constraintViolations = validator.validate(person);
System.out.println(constraintViolations.size());
System.out.println(constraintViolations);
//要判断是否校验通过只需要判断constraintViolations.size()即可
}

------------------写到这里一个基本的验证就已经完成了,但是在实际开发当中,我们往往会遇到对同一个User类进行不同的操作,比如插入操作的时候,名称不能为空,但是修改的时候名称可以为空,这种情况我们需要如下改进-----------------
首先:要写两个接口
一个接口会告诉HibernateValidation我们是添加操作,Name必须不为空
另一个接口告诉HibernateValidation我们是修改操作,Name可以为空
public interface Add {
//这个接口里边什么都不需要写,就这样即可
}
public interface Edit {
//这个接口里边什么都不需要写,就这样即可
}
---------------修改之后的User类------------------------------
public class User {
private String name;
//多出了一个groups的东西,说明下面我在Test类中,需要指定我的测试
//是什么操作,是Add还是Edit,如果是Add
//HibernateValidation就会校验,否则,不会校验
@NotNull(message = "姓名不能为空!", groups = { Add.class })
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-------------------修改之后的测试类--------------------------
public static void main(String[] aaa) {
User person = new User();
person.setName("AAS");

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
//主要是这里发生了变化,这里告诉HibernateValidation是添加操作,还是修改操作
Set<ConstraintViolation<User>> constraintViolations = validator.validate(person, Edit.class);
//constraintViolations.size()不等于0,说明不通过
System.out.println(constraintViolations.size());
for (ConstraintViolation<User> c : constraintViolations) {
//打印信息
System.out.println(c.getMessage());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: