Hibernate-Validation使用簡介
首先是要加入下面兩個包
hibernate-validator-4.1.0.Final.jar
validation-api-1.0.0.GA.jar
如果在驗證不通過的時候進行了新增、更新或刪除操作的時候,則會丟擲javax.validation.ConstraintViolationException異常
下面是測試用的類
Model2:
Java程式碼- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
-
import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.ManyToOne;
- import javax.persistence.Table;
- import javax.persistence.TableGenerator;
- import javax.validation.Valid;
- import javax.validation.constraints.Max;
- import javax.validation.constraints.Min;
-
import javax.validation.constraints.NotNull;
- import javax.validation.constraints.Size;
- import org.hibernate.validator.constraints.Email;
- import org.hibernate.validator.constraints.URL;
- @Entity
- @Table(name="t_Model2")
- @TableGenerator(name="mytable",initialValue=1,allocationSize=1)
- public class Model2 {
- private int id;
-
private
- private String address;
- private String phoneNumber;
- private String email;
- private int age;
- private Model3 model3;
- private String url;
- @Id
- @GeneratedValue(generator="mytable",strategy=GenerationType.TABLE)
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- @NotNull(message="姓名不能為空!")
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @NotNull(message="地址不能為空!")
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Size(max=11,min=11,message="長度只能為11位!")
- public String getPhoneNumber() {
- return phoneNumber;
- }
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
- @Email(message="email地址無效!")
- @NotNull(message="email地址不能為空!")
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- @NotNull(message = "Model3不能為空!")
- @Valid
- @ManyToOne
- public Model3 getModel3() {
- return model3;
- }
- public void setModel3(Model3 model3) {
- this.model3 = model3;
- }
- @Min(value=18,message="必須年滿18歲!")
- @Max(value=30,message="年齡不能大於30歲!")
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- @URL(message="無效的URL地址")
- @NotNull(message = "URL不能為空!")
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- }
Model3:
Java程式碼- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import javax.validation.constraints.NotNull;
- @Entity
- @Table(name="t_Model3")
- public class Model3 {
- private int id;
- private String name;
- @Id
- @GeneratedValue
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- @NotNull(message="model3的名稱不能為空!")
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
Test類:
Java程式碼- import org.springframework.context.ApplicationContext;
- import com.tiantian.test.model.Model2;
- import com.tiantian.test.service.Model2Service;
- import com.tiantian.test20110430.util.Util;
- public class Test1 {
- public static void main(String args[]) {
- ApplicationContext context = Util.getContext();
- Model2Service service = context.getBean(Model2Service.class);
- Model2 model = new Model2();
- model.setName("hello");
- model.setEmail("[email protected]");
- model.setAddress("湖南長沙");
- model.setPhoneNumber("15012345678");
- String result = Util.validateModel(model);// 返回的驗證結果,驗證結果就是一個字串,如果有錯誤的話則該字串的長度大於0
- System.out.println(result);
- if (result.length() == 0)// 驗證不通過的時候就不新增
- service.add(model);
- }
- }
上面用到的Util類:
Java程式碼- import java.util.Iterator;
- import java.util.Set;
- import javax.validation.ConstraintViolation;
- import javax.validation.Validation;
- import javax.validation.Validator;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class Util {
- private static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- public static ApplicationContext getContext() {
- return context;
- }
- public static String validateModel(Object obj) {//驗證某一個物件
- StringBuffer buffer = new StringBuffer(64);//用於儲存驗證後的錯誤資訊
- Validator validator = Validation.buildDefaultValidatorFactory()
- .getValidator();
- Set<ConstraintViolation<Object>> constraintViolations = validator
- .validate(obj);//驗證某個物件,,其實也可以只驗證其中的某一個屬性的
- Iterator<ConstraintViolation<Object>> iter = constraintViolations
- .iterator();
- while (iter.hasNext()) {
- String message = iter.next().getMessage();
- buffer.append(message);
- }
- return buffer.toString();
- }
- }
下面是一些主要的註解:
Java程式碼- @AssertTrue //用於boolean欄位,該欄位只能為true
- @AssertFalse//該欄位的值只能為false
- @CreditCardNumber//對信用卡號進行一個大致的驗證
- @DecimalMax//只能小於或等於該值
- @DecimalMin//只能大於或等於該值
- @Digits(integer=2,fraction=20)//檢查是否是一種數字的整數、分數,小數位數的數字。
- @Email//檢查是否是一個有效的email地址
- @Future//檢查該欄位的日期是否是屬於將來的日期
- @Length(min=,max=)//檢查所屬的欄位的長度是否在min和max之間,只能用於字串
- @Max//該欄位的值只能小於或等於該值
- @Min//該欄位的值只能大於或等於該值
- @NotNull//不能為null
- @NotBlank//不能為空,檢查時會將空格忽略
- @NotEmpty//不能為空,這裡的空是指空字串
- @Null//檢查該欄位為空
- @Past//檢查該欄位的日期是在過去
- @Size(min=, max=)//檢查該欄位的size是否在min和max之間,可以是字串、陣列、集合、Map等
- @URL(protocol=,host,port)//檢查是否是一個有效的URL,如果提供了protocol,host等,則該URL還需滿足提供的條件
- @Valid//該註解只要用於欄位為一個包含其他物件的集合或map或陣列的欄位,或該欄位直接為一個其他物件的引用,
- //這樣在檢查當前物件的同時也會檢查該欄位所引用的物件
相關推薦
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 />