Spring?Boot使用Hibernate-Validator校驗(yàn)參數(shù)時(shí)的長(zhǎng)度校驗(yàn)方法詳解
今天在使用Validator框架數(shù)據(jù)驗(yàn)證的時(shí)候碰到了三個(gè)類似的注解,都是用來(lái)限制長(zhǎng)度,但是用法上有區(qū)別:
1,@Size和@Length
@Data public class LoginVo { @Length(min = 5, max = 17, message = "userName長(zhǎng)度須在[5,17]") // 可以為 null,若不為 null,則長(zhǎng)度為 [5, 17] private String userName; // @Size不能驗(yàn)證Integer,適用于String @Size(min = 1, max = 3, message = "password長(zhǎng)度須在[1,3]") private String password; @Size(min = 1,max = 5,message = "list的Size在[1,5]") // list 可以為 null,若不為 null,則長(zhǎng)度為 [1, 5] private List<String> list; @NotNull @Valid // 級(jí)聯(lián)校驗(yàn),該注解將會(huì)校驗(yàn)自定義類 private OrderItem detailInfo; }
@Size是一個(gè)Bean驗(yàn)證注釋,用于驗(yàn)證關(guān)聯(lián)的String具有的長(zhǎng)度受最小值和最大值限制的值.
@Length是一個(gè)Hibernate特定的注釋,與@Size具有相同的含義;
兩者的區(qū)別:
? 用@length限制長(zhǎng)度為100,@length驗(yàn)證的應(yīng)該為100個(gè)字符的長(zhǎng)度,如99個(gè)漢字+2個(gè)數(shù)字,@length并不會(huì)報(bào)錯(cuò);
? 但用@size限制長(zhǎng)度為100,同樣情況下則會(huì)報(bào)錯(cuò),即超出限制長(zhǎng)度
? 綜上,@length限制長(zhǎng)度為字符長(zhǎng)度,@size限制長(zhǎng)度為個(gè)數(shù)長(zhǎng)度,@size為限制長(zhǎng)度通用格式
2,@Colunm
@Entity @Data public class MyEntity { @Column(name = "MY_FIELD_1", length=13) private String myField1; @Column(name = "MY_FIELD_2") @Size(min = 13, max = 13) private String myField2; @Column(name = "MY_FIELD_3") @Length(min = 13, max = 13) private String myField3; }
同樣的在實(shí)體類當(dāng)中可以定義@Colunm注解當(dāng)中設(shè)置length屬性。這是一個(gè)JPA注釋,并且length屬性由模式生成工具用于設(shè)置關(guān)聯(lián)的SQL列長(zhǎng)度,與DDL有關(guān)
總結(jié)
到此這篇關(guān)于Spring Boot使用Hibernate-Validator校驗(yàn)參數(shù)時(shí)的長(zhǎng)度校驗(yàn)方法的文章就介紹到這了,更多相關(guān)SpringBoot Validator校驗(yàn)參數(shù)長(zhǎng)度校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一種類似JAVA線程池的C++線程池實(shí)現(xiàn)方法
線程池(thread pool)是一種線程使用模式。線程過(guò)多或者頻繁創(chuàng)建和銷毀線程會(huì)帶來(lái)調(diào)度開銷,進(jìn)而影響緩存局部性和整體性能。這篇文章主要介紹了一種類似JAVA線程池的C++線程池實(shí)現(xiàn)方法,需要的朋友可以參考下2019-07-07Java+swing+Mysql實(shí)現(xiàn)商品銷售管理系統(tǒng)
基礎(chǔ)扎不扎實(shí)只有在實(shí)戰(zhàn)中才能顯現(xiàn),本篇文章手把手帶你用Java+swing+Mysql實(shí)現(xiàn)商品銷售管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2022-01-01關(guān)于MyBatis的foreach標(biāo)簽常用方法
這篇文章主要介紹了關(guān)于MyBatis的foreach標(biāo)簽常用方法,foreach 標(biāo)簽可以用來(lái)遍歷數(shù)組、列表和 Map 等集合參數(shù),實(shí)現(xiàn)批量操作或一些簡(jiǎn)單 SQL 操作,需要的朋友可以參考下2023-05-05詳解Java如何使用責(zé)任鏈默認(rèn)優(yōu)雅地進(jìn)行參數(shù)校驗(yàn)
項(xiàng)目中參數(shù)校驗(yàn)十分重要,它可以保護(hù)我們應(yīng)用程序的安全性和合法性。這篇文章主要介紹了如何使用責(zé)任鏈默認(rèn)優(yōu)雅地進(jìn)行參數(shù)校驗(yàn),需要的可以參考一下2023-03-03如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證
這篇文章主要介紹了如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-03-03詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比
這篇文章主要介紹了詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02mybatis 為什么千萬(wàn)不要使用 where 1=1
這篇文章主要介紹了mybatis 為什么千萬(wàn)不要使用 where 1=1,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05SpringBoot集成Swagger使用SpringSecurity控制訪問(wèn)權(quán)限問(wèn)題
這篇文章主要介紹了SpringBoot集成Swagger使用SpringSecurity控制訪問(wèn)權(quán)限問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java通過(guò)遞歸算法解決迷宮與漢諾塔及八皇后問(wèn)題
方法就是用來(lái)完成解決某件事情或?qū)崿F(xiàn)某個(gè)功能的辦法;程序調(diào)用自身的編程技巧稱為遞歸,本文主要講的是通過(guò)遞歸來(lái)實(shí)現(xiàn)三個(gè)經(jīng)典的問(wèn)題,解決迷宮,漢諾塔,八皇后問(wèn)題,感興趣的朋友可以參考一下2022-05-05