中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate Validator實現更簡潔的參數校驗及一個util

發布時間:2020-10-19 18:41:52 來源:腳本之家 閱讀:347 作者:夙夢流塵 欄目:編程語言

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

簡介

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

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

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

更多功能,如:自定義校驗規則、分組校驗、關聯參數聯合校驗請查看官網或百度

Dubbo中使用Hibernate Validator校驗入參

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

在客戶端驗證參數

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

服務器端驗證參數

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

在代碼里校驗入參

//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實現更簡潔的參數校驗及一個util

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 南靖县| 伽师县| 盐边县| 苏尼特右旗| 上林县| 赤水市| 云安县| 密云县| 肃宁县| 安泽县| 鹤峰县| 会同县| 高雄市| 宁安市| 乌什县| 北安市| 虎林市| 靖西县| 乌拉特前旗| 库伦旗| 邵阳市| 丽水市| 鸡东县| 无为县| 济阳县| 林州市| 沾益县| 肥乡县| 南和县| 满洲里市| 南陵县| 唐河县| 桐庐县| 万年县| 平南县| 绍兴县| 宽甸| 临洮县| 邵阳县| 临江市|