HibernateValidator實現(xiàn)更簡潔的參數(shù)校驗及一個util

代碼地址
https://github.com/wheel-organization/wheel

成都創(chuàng)新互聯(lián)公司服務項目包括民和網站建設、民和網站制作、民和網頁制作以及民和網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,民和網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到民和省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

簡介

hibernate-validator是Hibernate項目中的一個數(shù)據(jù)校驗框架,是Bean Validation 的參考實現(xiàn),hibernate-validator除了提供了JSR 303規(guī)范中所有內置constraint 的實現(xiàn),還有一些附加的constraint。

使用hibernate-validator能夠將數(shù)據(jù)校驗從業(yè)務代碼中脫離出來,增加代碼可讀性,同時也讓數(shù)據(jù)校驗變得更加方便、簡單。

官網地址:http://hibernate.org/validator/

如何使用

項目中已經引入了需要的api,無需重復引入

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>2.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>6.0.16.Final</version>
</dependency>

在要校驗的POJO上加上以下注解即可

注解用途
Valid遞歸的對關聯(lián)的對象進行校驗
AssertFalse用于boolean字段,該字段的值只能為false
AssertTrue用于boolean字段,該字段只能為true
DecimalMax(value)被注釋的元素必須是一個數(shù)字,只能大于或等于該值
DecimalMin(value)被注釋的元素必須是一個數(shù)字,只能小于或等于該值
Digits(integer,fraction)檢查是否是一種數(shù)字的(整數(shù),小數(shù))的位數(shù)
Future檢查該字段的日期是否是屬于將來的日期
FutureOrPresent判斷日期是否是將來或現(xiàn)在日期
Past檢查該字段的日期是在過去
PastOrPresent判斷日期是否是過去或現(xiàn)在日期
Max(value)該字段的值只能小于或等于該值
Min(value)該字段的值只能大于或等于該值
Negative判斷負數(shù)
NegativeOrZero判斷負數(shù)或0
Positive判斷正數(shù)
PositiveOrZero判斷正數(shù)或0
NotNull不能為null
Null必須為 null
Pattern(value)被注釋的元素必須符合指定的正則表達式
Size(max, min)檢查該字段的size是否在min和max之間,可以是字符串、數(shù)組、集合、Map等
Length(max, min)判斷字符串長度
CreditCardNumber被注釋的字符串必須通過Luhn校驗算法,銀行卡,信用卡等號碼一般都用Luhn計算合法性
Email被注釋的元素必須是電子郵箱地址
Length(min=, max=)被注釋的字符串的大小必須在指定的范圍內
NotBlank只能用于字符串不為null,并且字符串trim()以后length要大于0
NotEmpty集合對象的元素不為0,即集合不為空,也可以用于字符串不為null
Range(min=, max=)被注釋的元素必須在合適的范圍內
SafeHtmlclasspath中要有jsoup包
ScriptAssert要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的實現(xiàn)
URL(protocol=,host=,port=,regexp=,flags=)被注釋的字符串必須是一個有效的url

更多功能,如:自定義校驗規(guī)則、分組校驗、關聯(lián)參數(shù)聯(lián)合校驗請查看官網或百度

Dubbo中使用Hibernate Validator校驗入?yún)?/strong>

無需util,Dubbo接口配置上的validation為true即可

在客戶端驗證參數(shù)

<dubbo:reference id="xxxService" interface="xxx.ValidationService" validation="true" />

服務器端驗證參數(shù)

<dubbo:service interface="xxx.ValidationService" ref="xxxService" validation="true" />

在代碼里校驗入?yún)?/p>

//obj為包含Hibernate Validator注解的POJO
//快速失敗模式
ValidResult validResult = ValidationUtil.fastFailValidate(obj);
//obj為包含Hibernate Validator注解的POJO
//全部校驗模式
ValidResult validResult = ValidationUtil.allCheckValidate(obj);

樣例

public class ParamTestDTO implements Serializable {

  private static final long serialVersionUID = 7123882542534668217L;

  @AssertTrue(message = "Error True")
  private Boolean testTrue;

  @AssertFalse(message = "Error False")
  private Boolean testFalse;

  @DecimalMax(value = "10", message = "Error StrMax")
  private String testStrMax;

  @DecimalMin(value = "1", message = "Error StrMin")
  private String testStrMin;

  @Max(value = 10, message = "Error Max")
  private Integer testMax;

  @Min(value = 1, message = "Error Min")
  private Double testMin;

  @Digits(integer = 2, fraction = 3, message = "Error Dig")
  private BigDecimal testDig;

  @Past(message = "Error Past")
  private Date testPast;

  @Future(message = "Error Future")
  private Date testFuture;

  @Null(message = "Error Null")
  private String testNull;

  @NotNull(message = "Error NonNull")
  private String testNonNull;

  @Pattern(regexp = "^[0-9]?[0-9]$", message = "Error Pattern")
  private String testPattern;

  @Size(min = 1, max = 10, message = "Error Size")
  private List<String> testSize;

  @Length(min = 1, max = 10, message = "Error Length")
  private String testLength;

  @NotBlank(message = "Error Blank")
  private String testBlank;

  @NotEmpty(message = "Error NotEmpty")
  private String testEmpty;

  @Range(min = 1, max = 10, message = "Error Range")
  private String testRange;
}

單測:ValidationUtilTest

性能測試

結果如圖:

Hibernate Validator實現(xiàn)更簡潔的參數(shù)校驗及一個util

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享標題:HibernateValidator實現(xiàn)更簡潔的參數(shù)校驗及一個util
網站網址:http://bm7419.com/article32/gegjpc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網站制作、移動網站建設ChatGPT、域名注冊微信小程序、建站公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)