常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明
實(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
注解 | 說明 |
---|---|
@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ù)不能超過integer、小數(shù)部分的位數(shù)不能超過fraction的在可接受的范圍內(nèi) |
@Past | 被限制的元素(日期類型)必須是一個(gè)過去的日期 |
@Future | 被限制的元素(日期類型)必須是一個(gè)將來的日期 |
@Pattern(value) | 限制必須符合指定的正則表達(dá)式 |
被限制的元素值為是電子郵件地址,也可以通過正則表達(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)文章
Java中的synchronized有幾種加鎖方式(實(shí)例詳解)
在Java中,synchronized關(guān)鍵字提供了內(nèi)置的支持來實(shí)現(xiàn)同步訪問共享資源,以避免并發(fā)問題,這篇文章主要介紹了java的synchronized有幾種加鎖方式,需要的朋友可以參考下2024-05-05Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案
今天小編就為大家分享一篇關(guān)于Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03

SpringMVC高級(jí)開發(fā)功能實(shí)現(xiàn)過程解析

SpringBoot?全局線程池配置及應(yīng)用小結(jié)

Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例

解決mybatis-plus3.1.1版本使用lambda表達(dá)式查詢報(bào)錯(cuò)的方法

IDEA無法識(shí)別SpringBoot項(xiàng)目的簡(jiǎn)單解決辦法