常用校驗注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明
實體字段校驗 @NotNull、@NotEmpty、@NotBlank
1.@NotNull
不能為 null,但可以為 empty,一般用在 Integer 類型的基本數(shù)據(jù)類型的非空校驗上,而且被其標(biāo)注的字段可以使用 @size、@Max、@Min 對字段數(shù)值進行大小的控制
2.@NotEmpty
不能為 null,且長度必須大于 0,一般用在集合類上或者數(shù)組上
3.@NotBlank
只能作用在接收的 String 類型上,注意是只能,不能為 null,而且調(diào)用 trim() 后,長度必須大于 0即:必須有實際字符
- 注意在使用 @NotBlank 等注解時,一定要和 @valid 一起使用,否則 @NotBlank 不起作用。
- 一個 BigDecimal 的字段使用字段校驗標(biāo)簽應(yīng)該為 @NotNull。
- 在使用 @Length 一般用在 String 類型上可對字段數(shù)值進行最大長度限制的控制。
- 在使用 @Range 一般用在 Integer 類型上可對字段數(shù)值進行大小范圍的控制。
如下圖示:
如下示例:
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
常用的校驗注解
javax.validation.constraints.xxx
注解 | 說明 |
---|---|
@Null | 限制只能為null |
@NotNull | 限制必須不能為null |
@AssertTrue | 限制必須為true |
@AssertFalse | 限制必須為false |
@Min(value) | 限制必須為一個不小于指定值的數(shù)字 |
@Max(value) | 限制必須為一個不大于指定值的數(shù)字 |
@DecimalMin(value) | 被限制的元素必須是一個數(shù)字,其值必須大于等于指定的最小值 |
@DecimalMax(value) | 被限制的元素必須是一個數(shù)字,其值必須小于等于指定的最大值 |
@Size(max,min) | 限制字符長度必須在min到max的指定范圍內(nèi) |
@Digits(integer,fraction) | 限制必須為一個小數(shù),且整數(shù)部分的位數(shù)不能超過integer、小數(shù)部分的位數(shù)不能超過fraction的在可接受的范圍內(nèi) |
@Past | 被限制的元素(日期類型)必須是一個過去的日期 |
@Future | 被限制的元素(日期類型)必須是一個將來的日期 |
@Pattern(value) | 限制必須符合指定的正則表達式 |
被限制的元素值為是電子郵件地址,也可以通過正則表達式和flag指定自定義的email | |
@Length | 被限制的字符串的大小必須在指定的范圍內(nèi) |
@NotEmpty | 被限制的字符串必須非空(不為null且不為空) |
@Range | 被限制的元素必須在合適的范圍內(nèi) |
附@JsonFormat
有時使用 @JsonFormat 注解時,查到的時間可能會比數(shù)據(jù)庫中的時間少八個小時,這是由于時區(qū)差引起的,JsonFormat 默認(rèn)的時區(qū)是 Greenwich Time, 默認(rèn)的是格林威治時間,而我們是在東八區(qū)上,所以時間會比實際我們想得到的時間少八個小時。
需要在后面加上一個時區(qū)
如下示例:
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") private Date date;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的synchronized有幾種加鎖方式(實例詳解)
在Java中,synchronized關(guān)鍵字提供了內(nèi)置的支持來實現(xiàn)同步訪問共享資源,以避免并發(fā)問題,這篇文章主要介紹了java的synchronized有幾種加鎖方式,需要的朋友可以參考下2024-05-05Springboot項目打war包docker包找不到resource下靜態(tài)資源的解決方案
今天小編就為大家分享一篇關(guān)于Springboot項目打war包docker包找不到resource下靜態(tài)資源的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

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

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

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

解決mybatis-plus3.1.1版本使用lambda表達式查詢報錯的方法