最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hibernate Validator實(shí)現(xiàn)更簡(jiǎn)潔的參數(shù)校驗(yàn)及一個(gè)util

 更新時(shí)間:2019年05月14日 10:17:43   作者:夙夢(mèng)流塵  
這篇文章主要介紹了Hibernate Validator實(shí)現(xiàn)更簡(jiǎn)潔的參數(shù)校驗(yàn)及一個(gè)util,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

簡(jiǎn)介

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

使用hibernate-validator能夠?qū)?shù)據(jù)校驗(yàn)從業(yè)務(wù)代碼中脫離出來(lái),增加代碼可讀性,同時(shí)也讓數(shù)據(jù)校驗(yàn)變得更加方便、簡(jiǎn)單。

官網(wǎng)地址:http://hibernate.org/validator/

如何使用

項(xiàng)目中已經(jīng)引入了需要的api,無(wú)需重復(fù)引入

<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>

在要校驗(yàn)的POJO上加上以下注解即可

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

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

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

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

在客戶(hù)端驗(yàn)證參數(shù)

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

在服務(wù)器端驗(yàn)證參數(shù)

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

在代碼里校驗(yàn)入?yún)?br />

//obj為包含Hibernate Validator注解的POJO
//快速失敗模式
ValidResult validResult = ValidationUtil.fastFailValidate(obj);
//obj為包含Hibernate Validator注解的POJO
//全部校驗(yàn)?zāi)J?
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;
}

單測(cè):ValidationUtilTest

性能測(cè)試

結(jié)果如圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springBoot基于webSocket實(shí)現(xiàn)掃碼登錄

    springBoot基于webSocket實(shí)現(xiàn)掃碼登錄

    最近做了個(gè)新項(xiàng)目,涉及到掃碼登錄。之前項(xiàng)目使用的是 ajax輪詢(xún)的方式。感覺(jué)太low了。所以這次用webSocket的方式進(jìn)行實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • JAVA JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)詳解

    JAVA JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)詳解

    這篇文章主要介紹了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • springboot接收json數(shù)據(jù)時(shí),接收到空值問(wèn)題

    springboot接收json數(shù)據(jù)時(shí),接收到空值問(wèn)題

    這篇文章主要介紹了springboot接收json數(shù)據(jù)時(shí),接收到空值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中Arrays.asList()需要注意的坑

    Java中Arrays.asList()需要注意的坑

    在Java中,我們經(jīng)常需要將數(shù)組轉(zhuǎn)換為L(zhǎng)ist來(lái)方便地進(jìn)行操作,Arrays.asList()方法是一種常見(jiàn)的方式,本文主要介紹了Java中Arrays.asList()需要注意的坑,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Json轉(zhuǎn)換工具類(lèi)

    Json轉(zhuǎn)換工具類(lèi)

    今天小編就為大家分享一篇關(guān)于Json轉(zhuǎn)換工具類(lèi),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • mybatis查詢(xún)結(jié)果返回至實(shí)體類(lèi)的示例代碼

    mybatis查詢(xún)結(jié)果返回至實(shí)體類(lèi)的示例代碼

    這篇文章主要介紹了mybatis查詢(xún)結(jié)果返回至實(shí)體類(lèi)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 面試題:Java中如何停止線(xiàn)程的方法

    面試題:Java中如何停止線(xiàn)程的方法

    這篇文章主要介紹了Java中如何停止線(xiàn)程的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • jfinal中stateless模式嵌入shiro驗(yàn)證的實(shí)現(xiàn)方式

    jfinal中stateless模式嵌入shiro驗(yàn)證的實(shí)現(xiàn)方式

    這篇文章主要介紹了jfinal中stateless模式嵌入shiro驗(yàn)證,今天,我們就來(lái)嘗試一種通過(guò)攔截器來(lái)實(shí)現(xiàn)的Stateless Jfinal嵌入方式,需要的朋友可以參考下
    2022-06-06
  • java控制Pdf自動(dòng)打印的小例子

    java控制Pdf自動(dòng)打印的小例子

    java控制Pdf自動(dòng)打印的小例子,需要的朋友可以參考一下
    2013-04-04
  • Java使用多線(xiàn)程異步執(zhí)行批量更新操作方法

    Java使用多線(xiàn)程異步執(zhí)行批量更新操作方法

    這篇文章主要介紹了Java使用多線(xiàn)程異步執(zhí)行批量更新操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論

兴海县| 天全县| 隆化县| 吉安县| 越西县| 双城市| 中山市| 兰西县| 贵州省| 稷山县| 山阴县| 宜兰县| 乐安县| 慈利县| 阜康市| 沂源县| 淮安市| 读书| 磴口县| 青阳县| 德州市| 浏阳市| 凤凰县| 安顺市| 瑞安市| 东光县| 永平县| 阜平县| 黑河市| 廉江市| 台湾省| 凤台县| 梨树县| 广南县| 厦门市| 博罗县| 丰原市| 固阳县| 盐亭县| 比如县| 舒城县|