1. 程式人生 > >Hibernate-Validation使用簡介

Hibernate-Validation使用簡介

首先是要加入下面兩個包

hibernate-validator-4.1.0.Final.jar
 validation-api-1.0.0.GA.jar

如果在驗證不通過的時候進行了新增、更新或刪除操作的時候,則會丟擲javax.validation.ConstraintViolationException異常

下面是測試用的類

Model2:

Java程式碼  收藏程式碼
  1. import javax.persistence.Entity;  
  2. import javax.persistence.GeneratedValue;  
  3. import javax.persistence.GenerationType;  
  4. import javax.persistence.Id;  
  5. import javax.persistence.ManyToOne;  
  6. import javax.persistence.Table;  
  7. import javax.persistence.TableGenerator;  
  8. import javax.validation.Valid;  
  9. import javax.validation.constraints.Max;  
  10. import javax.validation.constraints.Min;  
  11. import javax.validation.constraints.NotNull;  
  12. import javax.validation.constraints.Size;  
  13. import org.hibernate.validator.constraints.Email;  
  14. import org.hibernate.validator.constraints.URL;  
  15. @Entity  
  16. @Table(name="t_Model2")  
  17. @TableGenerator(name="mytable",initialValue=1,allocationSize=1)  
  18. public class Model2 {  
  19.     private int id;  
  20.     private
     String name;  
  21.     private String address;  
  22.     private String phoneNumber;  
  23.     private String email;  
  24.     private int age;  
  25.     private Model3 model3;  
  26.     private String url;  
  27.     @Id  
  28.     @GeneratedValue(generator="mytable",strategy=GenerationType.TABLE)  
  29.     public int getId() {  
  30.         return id;  
  31.     }  
  32.     public void setId(int id) {  
  33.         this.id = id;  
  34.     }  
  35.     @NotNull(message="姓名不能為空!")  
  36.     public String getName() {  
  37.         return name;  
  38.     }  
  39.     public void setName(String name) {  
  40.         this.name = name;  
  41.     }  
  42.     @NotNull(message="地址不能為空!")  
  43.     public String getAddress() {  
  44.         return address;  
  45.     }  
  46.     public void setAddress(String address) {  
  47.         this.address = address;  
  48.     }  
  49.     @Size(max=11,min=11,message="長度只能為11位!")  
  50.     public String getPhoneNumber() {  
  51.         return phoneNumber;  
  52.     }  
  53.     public void setPhoneNumber(String phoneNumber) {  
  54.         this.phoneNumber = phoneNumber;  
  55.     }  
  56.     @Email(message="email地址無效!")  
  57.     @NotNull(message="email地址不能為空!")  
  58.     public String getEmail() {  
  59.         return email;  
  60.     }  
  61.     public void setEmail(String email) {  
  62.         this.email = email;  
  63.     }  
  64.     @NotNull(message = "Model3不能為空!")  
  65.     @Valid  
  66.     @ManyToOne  
  67.     public Model3 getModel3() {  
  68.         return model3;  
  69.     }  
  70.     public void setModel3(Model3 model3) {  
  71.         this.model3 = model3;  
  72.     }  
  73.     @Min(value=18,message="必須年滿18歲!")  
  74.     @Max(value=30,message="年齡不能大於30歲!")  
  75.     public int getAge() {  
  76.         return age;  
  77.     }  
  78.     public void setAge(int age) {  
  79.         this.age = age;  
  80.     }  
  81.     @URL(message="無效的URL地址")  
  82.     @NotNull(message = "URL不能為空!")  
  83.     public String getUrl() {  
  84.         return url;  
  85.     }  
  86.     public void setUrl(String url) {  
  87.         this.url = url;  
  88.     }  
  89. }  

 Model3:

Java程式碼  收藏程式碼
  1. import javax.persistence.Entity;  
  2. import javax.persistence.GeneratedValue;  
  3. import javax.persistence.Id;  
  4. import javax.persistence.Table;  
  5. import javax.validation.constraints.NotNull;  
  6. @Entity  
  7. @Table(name="t_Model3")  
  8. public class Model3 {  
  9.     private int id;  
  10.     private String name;  
  11.     @Id  
  12.     @GeneratedValue  
  13.     public int getId() {  
  14.         return id;  
  15.     }  
  16.     public void setId(int id) {  
  17.         this.id = id;  
  18.     }  
  19.     @NotNull(message="model3的名稱不能為空!")  
  20.     public String getName() {  
  21.         return name;  
  22.     }  
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26. }  

Test類:

Java程式碼  收藏程式碼
  1. import org.springframework.context.ApplicationContext;  
  2. import com.tiantian.test.model.Model2;  
  3. import com.tiantian.test.service.Model2Service;  
  4. import com.tiantian.test20110430.util.Util;  
  5. public class Test1 {  
  6.     public static void main(String args[]) {  
  7.         ApplicationContext context = Util.getContext();  
  8.         Model2Service service = context.getBean(Model2Service.class);  
  9.         Model2 model = new Model2();  
  10.         model.setName("hello");  
  11.         model.setEmail("[email protected]");  
  12.         model.setAddress("湖南長沙");  
  13.         model.setPhoneNumber("15012345678");  
  14.         String result = Util.validateModel(model);// 返回的驗證結果,驗證結果就是一個字串,如果有錯誤的話則該字串的長度大於0  
  15.         System.out.println(result);  
  16.         if (result.length() == 0)// 驗證不通過的時候就不新增  
  17.             service.add(model);  
  18.     }  
  19. }  

 上面用到的Util類:

Java程式碼  收藏程式碼
  1. import java.util.Iterator;  
  2. import java.util.Set;  
  3. import javax.validation.ConstraintViolation;  
  4. import javax.validation.Validation;  
  5. import javax.validation.Validator;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. public class Util {  
  9.     private static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  
  10.     public static ApplicationContext getContext() {  
  11.         return context;  
  12.     }  
  13.     public static String validateModel(Object obj) {//驗證某一個物件  
  14.         StringBuffer buffer = new StringBuffer(64);//用於儲存驗證後的錯誤資訊  
  15.         Validator validator = Validation.buildDefaultValidatorFactory()  
  16.                 .getValidator();  
  17.         Set<ConstraintViolation<Object>> constraintViolations = validator  
  18.                 .validate(obj);//驗證某個物件,,其實也可以只驗證其中的某一個屬性的  
  19.         Iterator<ConstraintViolation<Object>> iter = constraintViolations  
  20.                 .iterator();  
  21.         while (iter.hasNext()) {  
  22.             String message = iter.next().getMessage();  
  23.             buffer.append(message);  
  24.         }  
  25.         return buffer.toString();  
  26.     }  
  27. }  

下面是一些主要的註解:

Java程式碼  收藏程式碼
  1. @AssertTrue //用於boolean欄位,該欄位只能為true  
  2. @AssertFalse//該欄位的值只能為false  
  3. @CreditCardNumber//對信用卡號進行一個大致的驗證  
  4. @DecimalMax//只能小於或等於該值  
  5. @DecimalMin//只能大於或等於該值  
  6. @Digits(integer=2,fraction=20)//檢查是否是一種數字的整數、分數,小數位數的數字。  
  7. @Email//檢查是否是一個有效的email地址  
  8. @Future//檢查該欄位的日期是否是屬於將來的日期  
  9. @Length(min=,max=)//檢查所屬的欄位的長度是否在min和max之間,只能用於字串  
  10. @Max//該欄位的值只能小於或等於該值  
  11. @Min//該欄位的值只能大於或等於該值  
  12. @NotNull//不能為null  
  13. @NotBlank//不能為空,檢查時會將空格忽略  
  14. @NotEmpty//不能為空,這裡的空是指空字串  
  15. @Null//檢查該欄位為空  
  16. @Past//檢查該欄位的日期是在過去  
  17. @Size(min=, max=)//檢查該欄位的size是否在min和max之間,可以是字串、陣列、集合、Map等  
  18. @URL(protocol=,host,port)//檢查是否是一個有效的URL,如果提供了protocol,host等,則該URL還需滿足提供的條件  
  19. @Valid//該註解只要用於欄位為一個包含其他物件的集合或map或陣列的欄位,或該欄位直接為一個其他物件的引用,  
  20.         //這樣在檢查當前物件的同時也會檢查該欄位所引用的物件  

相關推薦

Hibernate-Validation使用簡介

首先是要加入下面兩個包 hibernate-validator-4.1.0.Final.jar  validation-api-1.0.0.GA.jar 如果在驗證不通過的時候進行了新增、更新或刪除操作的時候,則會丟擲javax.validation.Constra

hibernate validation內置註解及自定義註解

ons private from decimal 最重要的 con name cts mva 1 Bean Validation 中內置的 constraint 2 @Null 被註釋的元素必須為 null 3 @NotNull

JAVA中通過Hibernate-Validation進行參數驗證

tst map art 合法性 iter AI 字符 nta ali 在開發JAVA服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而hibernate-validator提供了一些常用的參數校驗註解,我們可以拿來使用。1.maven中引入hibernate-

校驗框架hibernate validation

1.比較 @Valid是使用hibernate validation的時候使用 @Validated 是隻用spring  Validator 校驗機制使用\ 2.實現 其中,@valid,java的jsr303聲明瞭這類介面,hib

Hibernate Validation自定義註解校驗

權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/cccmercy/article/details/79105624 情景:需要對String型別的屬性比如description進行驗證,驗證規則是當descript

Hibernate-Validation的使用和常用的註解

    @AssertTrue //用於boolean欄位,該欄位只能為true       @AssertFalse//該欄位的值只能為false       @CreditCardNumber//對信用卡號進行一個大致的驗證       @DecimalMax//只能小於

控制hibernate validation校驗順序

背景        專案使用的是hibernate validation校驗框架(不懂的可以參考這篇文章:Bean Validation)。對二維碼id的校驗,需要校驗長度及非法字元。由於非法字元是通過正則表示式匹配的,存在效率不高的問題,需要控制下校驗順序,即先校驗長度,

Hibernate validation 的使用. Bean 自動校驗

以前弄過hibernate-validation的,可今天想用一下的時候發現某些東西自己又忘了,於是又重新整理了下,並做了點實驗: 首先是要加入下面兩個包 hibernate-validator-4.1.0.Final.jar  validation-api-1.0.0.GA.jar 如果在驗證不通過的時

學習Spring Boot:(十)使用hibernate validation完成資料後端校驗

前言 後臺資料的校驗也是開發中比較注重的一點,用來校驗資料的正確性,以免一些非法的資料破壞系統,或者進入資料庫,造成資料汙染,由於資料檢驗可能應用到很多層面,所以系統對資料校驗要求比較嚴格且追求可變性及效率。 瞭解 瞭解一點概念性的東東。 * JSR 3

springmvc服務端校驗hibernate validation配置

springmvc服務端校驗hibernate validation的配置 步驟如下: 0.需要引3個jar包    hibernate-validator-4.3.0.Final.jar    jb

史上最簡單的Hibernate入門簡介

其實Hibernate本身是個獨立的框架,它不需要任何web server或application server的支援。然而,大多數的Hibernate入門介紹都加入了很多非Hibernate的東西,比如: Tomcat, Eclipse, Log4J,Struts, XDo

Hibernate快取簡介及領域物件的三種狀態

1. Session級別的快取又叫做一級快取;SessionFactory級別的快取叫做二級快取。 2.理解Session的快取: •當Session的save()方法持久化一個Customer物件時,Customer物件被加入到Session的快取中,以後即使應用程式中

Hibernate Validation各註解的用法

Hibernate Validator 是 Bean Validation 的參考實現 . Hibernate Validator 提供了 JSR 303 規範中所有內建 constraint 的實現,除此之外還有一些附加的 constraint  Java程式碼  

自定義hibernate validation註解

效果和優點 先看最後效果: public class UserEntity { @Password private String password; @Email private String email; }

最簡單的Hibernate入門簡介

其實Hibernate本身是個獨立的框架,它不需要任何web server或application server的支援。然而,大多數的Hibernate入門介紹都加入了很多非Hibernate的東西,比如: Tomcat, Eclipse, Log4J,Struts, XDo

Spring Hibernate Validation

資料校驗是 Web 應用為了安全必須處理的步驟,Spring MVC 提供了兩種方法來對使用者的輸入資料進行校驗,一種是 Spring 自帶的 Validation 校驗框架,另一種是利用 JRS-303 驗證框架進行驗證。 在實際開發中我們不是使用 Spri

Hibernate Validation各註解的用法Demo

依賴包<dependency> <groupId>org.hibernate</groupId> <artifactId>hiberna

Hibernate入門簡介

package resultset tro objc 連接數 程序 映射 date void 什麽是Hibernate框架? Hibernate是一種ORM框架,全稱為 Object_Relative DateBase-Mapping,在Java對象與關系數據庫之間建立某

spring-boot 使用hibernate validation對引數進行優雅的校驗

springboot天生支援使用hibernate validation對引數的優雅校驗,如果不使用它,只能對引數挨個進行如下方式的手工校驗,不僅難看,使用起來還很不方便: ``` java if(StringUtils.isEmpty(userName)){ throw new RuntimeExcep

hibernate的校驗框架validation 和 HttpMessageConverter的配置方式

hibernate的校驗框架validation 和 httpmessageconverter的配置方式hibernate的校驗框架validation 和 HttpMessageConverter的配置方式好像是2個不相幹的配置內容,但他們都用到了<mvc:annotation-driven />