常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說(shuō)明
實(shí)體字段校驗(yàn) @NotNull、@NotEmpty、@NotBlank
1.@NotNull
不能為 null,但可以為 empty,一般用在 Integer 類型的基本數(shù)據(jù)類型的非空校驗(yàn)上,而且被其標(biāo)注的字段可以使用 @size、@Max、@Min 對(duì)字段數(shù)值進(jìn)行大小的控制
2.@NotEmpty
不能為 null,且長(zhǎng)度必須大于 0,一般用在集合類上或者數(shù)組上
3.@NotBlank
只能作用在接收的 String 類型上,注意是只能,不能為 null,而且調(diào)用 trim() 后,長(zhǎng)度必須大于 0即:必須有實(shí)際字符
- 注意在使用 @NotBlank 等注解時(shí),一定要和 @valid 一起使用,否則 @NotBlank 不起作用。
- 一個(gè) BigDecimal 的字段使用字段校驗(yàn)標(biāo)簽應(yīng)該為 @NotNull。
- 在使用 @Length 一般用在 String 類型上可對(duì)字段數(shù)值進(jìn)行最大長(zhǎng)度限制的控制。
- 在使用 @Range 一般用在 Integer 類型上可對(duì)字段數(shù)值進(jìn)行大小范圍的控制。
如下圖示:

如下示例:
1.String name = null; @NotNull: false @NotEmpty:false @NotBlank:false 2.String name = ""; @NotNull:true @NotEmpty: false @NotBlank: false 3.String name = " "; @NotNull: true @NotEmpty: true @NotBlank: false 4.String name = "Hello World!"; @NotNull: true @NotEmpty:true @NotBlank:true
常用的校驗(yàn)注解
javax.validation.constraints.xxx
| 注解 | 說(shuō)明 |
|---|---|
| @Null | 限制只能為null |
| @NotNull | 限制必須不能為null |
| @AssertTrue | 限制必須為true |
| @AssertFalse | 限制必須為false |
| @Min(value) | 限制必須為一個(gè)不小于指定值的數(shù)字 |
| @Max(value) | 限制必須為一個(gè)不大于指定值的數(shù)字 |
| @DecimalMin(value) | 被限制的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值 |
| @DecimalMax(value) | 被限制的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值 |
| @Size(max,min) | 限制字符長(zhǎng)度必須在min到max的指定范圍內(nèi) |
| @Digits(integer,fraction) | 限制必須為一個(gè)小數(shù),且整數(shù)部分的位數(shù)不能超過(guò)integer、小數(shù)部分的位數(shù)不能超過(guò)fraction的在可接受的范圍內(nèi) |
| @Past | 被限制的元素(日期類型)必須是一個(gè)過(guò)去的日期 |
| @Future | 被限制的元素(日期類型)必須是一個(gè)將來(lái)的日期 |
| @Pattern(value) | 限制必須符合指定的正則表達(dá)式 |
| 被限制的元素值為是電子郵件地址,也可以通過(guò)正則表達(dá)式和flag指定自定義的email | |
| @Length | 被限制的字符串的大小必須在指定的范圍內(nèi) |
| @NotEmpty | 被限制的字符串必須非空(不為null且不為空) |
| @Range | 被限制的元素必須在合適的范圍內(nèi) |
附@JsonFormat
有時(shí)使用 @JsonFormat 注解時(shí),查到的時(shí)間可能會(huì)比數(shù)據(jù)庫(kù)中的時(shí)間少八個(gè)小時(shí),這是由于時(shí)區(qū)差引起的,JsonFormat 默認(rèn)的時(shí)區(qū)是 Greenwich Time, 默認(rèn)的是格林威治時(shí)間,而我們是在東八區(qū)上,所以時(shí)間會(huì)比實(shí)際我們想得到的時(shí)間少八個(gè)小時(shí)。
需要在后面加上一個(gè)時(shí)區(qū)
如下示例:
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") private Date date;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA 刷題利器 LeetCode 插件詳解
這篇文章主要介紹了IntelliJ IDEA 刷題利器 LeetCode 插件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
springboot 中異步任務(wù),定時(shí)任務(wù),郵件任務(wù)詳解
這篇文章主要介紹了springboot 與異步任務(wù),定時(shí)任務(wù),郵件任務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
Java實(shí)體類實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析
這篇文章主要介紹了Java實(shí)體類實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
詳解如何為SpringBoot項(xiàng)目中的自定義配置添加IDE支持
在SpringBoot項(xiàng)目中利用maven的generate插件
淺析SpringBoot自動(dòng)化配置原理實(shí)現(xiàn)
使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值

