java自定義注解實現數據校驗,Java-HibernateValidation校驗bean

 2023-10-15 阅读 29 评论 0

摘要:本人菜B一個,所謂好筆頭不如爛記性,但是我有一個好記性,所以還是拿個爛筆頭記下來,方便以后使用 使用HibernateValidation之前,首先我們需要導入5個包,一個都不能少 也就是我從官網下載的壓縮包下hibernate-validator-5.1.3.Final\

本人菜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方法上面加標簽,注意是GETreturn 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());}}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/137164.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息