Java中常見(jiàn)的數(shù)據(jù)驗(yàn)證注解總結(jié)大全
1.@Length
功能:
@Length用于驗(yàn)證字符串的長(zhǎng)度是否在指定的范圍內(nèi)。適用場(chǎng)景:它只適用于字符串類(lèi)型的字段。該注解可以用來(lái)限制字符串的最小長(zhǎng)度和最大長(zhǎng)度。
常見(jiàn)用途:驗(yàn)證用戶輸入的文本(例如用戶名、密碼等)的長(zhǎng)度是否滿足要求。
示例:
import org.hibernate.validator.constraints.Length;
public class User {
@Length(min = 5, max = 15, message = "Username must be between 5 and 15 characters")
private String username;
// getters and setters
}
- 在這個(gè)例子中,
@Length(min = 5, max = 15)表示username字段的長(zhǎng)度必須在 5 到 15 個(gè)字符之間。
2.@Range
功能:
@Range用于驗(yàn)證數(shù)字(如int、long、BigDecimal等)是否在指定的范圍內(nèi)。適用場(chǎng)景:它通常用于數(shù)值類(lèi)型的數(shù)據(jù)(如整數(shù)或浮動(dòng)小數(shù))。你可以指定數(shù)值的最小值和最大值。
常見(jiàn)用途:驗(yàn)證用戶輸入的數(shù)字(例如年齡、評(píng)分等)是否在一個(gè)合理的范圍內(nèi)。
示例:
import org.hibernate.validator.constraints.Range;
public class Product {
@Range(min = 1, max = 10000, message = "Price must be between 1 and 10000")
private int price;
// getters and setters
}
- 在這個(gè)例子中,
@Range(min = 1, max = 10000)表示price字段的值必須在 1 到 10,000 之間。
主要區(qū)別:
| 特性 | @Length | @Range |
|---|---|---|
| 驗(yàn)證類(lèi)型 | 用于驗(yàn)證字符串的長(zhǎng)度范圍 | 用于驗(yàn)證數(shù)值(如整數(shù)、浮點(diǎn)數(shù))的范圍 |
| 適用數(shù)據(jù)類(lèi)型 | 字符串(String) | 數(shù)字(int、long、BigDecimal 等) |
| 常見(jiàn)用途 | 限制文本長(zhǎng)度(例如用戶名、密碼等) | 限制數(shù)字值(例如價(jià)格、年齡等) |
總結(jié):
@Length是針對(duì)字符串類(lèi)型的長(zhǎng)度驗(yàn)證,主要用于限制字符串的最小和最大長(zhǎng)度。@Range是針對(duì)數(shù)值類(lèi)型的范圍驗(yàn)證,主要用于限制數(shù)字的最小和最大值
3.@NotNull
功能:
@NotNull用于驗(yàn)證一個(gè)字段的值是否為null。如果該字段的值為null,則驗(yàn)證失敗。適用場(chǎng)景:它適用于所有類(lèi)型的字段(包括字符串、數(shù)字、對(duì)象等),用來(lái)確保該字段不能為
null。注意:
@NotNull不會(huì)驗(yàn)證空字符串 ("")、空集合或空數(shù)組,它只關(guān)注字段是否為null。
示例:
import javax.validation.constraints.NotNull;
public class User {
@NotNull(message = "Username cannot be null")
private String username;
// getters and setters
}
- 在這個(gè)例子中,
@NotNull確保username字段的值不能為null。如果它是null,驗(yàn)證將失敗。
4.@NotBlank
功能:
@NotBlank用于驗(yàn)證一個(gè)字符串字段不能為null、不能為空字符串(""),并且不能只包含空白字符(如空格、制表符等)。它比@NotNull更嚴(yán)格,確保字符串不僅非空,還必須包含至少一個(gè)非空白字符。適用場(chǎng)景:它專(zhuān)門(mén)用于字符串類(lèi)型的字段,確保字符串有有效的內(nèi)容。
注意:
@NotBlank不僅會(huì)驗(yàn)證null,還會(huì)驗(yàn)證字符串是否為空或者只包含空格。
示例:
import javax.validation.constraints.NotBlank;
public class User {
@NotBlank(message = "Username cannot be blank")
private String username;
// getters and setters
}
- 在這個(gè)例子中,
@NotBlank確保username字段的值不能為null,也不能是一個(gè)空字符串或只包含空白字符。如果是,驗(yàn)證將失敗。
主要區(qū)別:
| 特性 | @NotNull | @NotBlank |
|---|---|---|
| 驗(yàn)證內(nèi)容 | 僅驗(yàn)證字段是否為 null | 驗(yàn)證字段是否為 null 或空白字符串(包括只包含空格) |
| 適用類(lèi)型 | 適用于任何類(lèi)型的字段(String、Integer、對(duì)象等) | 僅適用于字符串類(lèi)型的字段(String) |
| 驗(yàn)證條件 | 只關(guān)注字段是否為 null | 確保字段非 null 且包含至少一個(gè)非空白字符 |
| 常見(jiàn)用途 | 確保字段的值不能為 null | 確保字符串字段非空且不為空白 |
總結(jié):
@NotNull主要用來(lái)確保字段不為null,適用于任何類(lèi)型的字段。@NotBlank主要用于字符串類(lèi)型的字段,確保字段不僅不為null,而且不為空字符串,也不包含僅空白字符。
使用場(chǎng)景:
如果你想驗(yàn)證某個(gè)字段不能為
null,使用@NotNull。如果你想驗(yàn)證某個(gè)字符串字段不能為
null或者空白字符串,使用@NotBlank。
5.@Min
功能:
@Min用于驗(yàn)證數(shù)值(如整數(shù)、浮點(diǎn)數(shù)等)是否大于或等于指定的最小值。適用場(chǎng)景:適用于基本數(shù)值類(lèi)型(如
int、long、float、double及其包裝類(lèi)),以及字符串表示的數(shù)值(需確保字符串可轉(zhuǎn)換為數(shù)值類(lèi)型)。常見(jiàn)用途:驗(yàn)證年齡下限、金額最小值、數(shù)量下限等場(chǎng)景。
示例:
import javax.validation.constraints.Min;
public class Product {
@Min(value = 0, message = "Price cannot be negative")
private double price;
// getters and setters
}
- 在這個(gè)例子中,
@Min(value = 0)表示price字段的值必須大于或等于 0。
6.@Max
功能:
@Max用于驗(yàn)證數(shù)值是否小于或等于指定的最大值。適用場(chǎng)景:與
@Min類(lèi)似,適用于基本數(shù)值類(lèi)型及可轉(zhuǎn)換為數(shù)值的字符串。常見(jiàn)用途:驗(yàn)證年齡上限、金額最大值、數(shù)量上限等場(chǎng)景。
示例:
import javax.validation.constraints.Max;
public class AgeVerification {
@Max(value = 150, message = "Age cannot exceed 150")
private Integer age;
// getters and setters
}
- 在這個(gè)例子中,
@Max(value = 150)表示age字段的值必須小于或等于 150。
7.@Size
功能:
@Size用于驗(yàn)證集合(如List、Set)、數(shù)組或字符串的大?。ㄩL(zhǎng)度)是否在指定范圍內(nèi)。適用場(chǎng)景:適用于字符串、集合類(lèi)、數(shù)組等可計(jì)算大小的對(duì)象。
常見(jiàn)用途:驗(yàn)證列表長(zhǎng)度、字符串長(zhǎng)度、數(shù)組大小等場(chǎng)景。
示例:
import javax.validation.constraints.Size;
import java.util.List;
public class ShoppingCart {
@Size(min = 1, max = 10, message = "Must select between 1 and 10 items")
private List<String> items;
// getters and setters
}
- 在這個(gè)例子中,
@Size(min = 1, max = 10)表示items列表的元素?cái)?shù)量必須在 1 到 10 之間。
總結(jié)
| 注解 | 適用類(lèi)型 | 驗(yàn)證邏輯 | 示例參數(shù) |
|---|---|---|---|
@Min | 數(shù)值類(lèi)型(及可轉(zhuǎn)換為數(shù)值的字符串) | 最小值約束(≥ 指定值) | @Min(18) |
@Max | 數(shù)值類(lèi)型(及可轉(zhuǎn)換為數(shù)值的字符串) | 最大值約束(≤ 指定值) | @Max(100) |
@Size | 字符串、集合、數(shù)組 | 大小/長(zhǎng)度約束(min ≤ size ≤ max) | @Size(min=1, max=5) |
到此這篇關(guān)于Java中常見(jiàn)數(shù)據(jù)驗(yàn)證注解的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)驗(yàn)證注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
啟動(dòng)springboot應(yīng)用因未配置數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決方案
這篇文章主要介紹了啟動(dòng)springboot應(yīng)用因未配置數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot項(xiàng)目集成MinIO全過(guò)程
這篇文章主要介紹了SpringBoot項(xiàng)目集成MinIO全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
JFINAL+Ajax傳參 array 數(shù)組方法 獲取request中數(shù)組操作
這篇文章主要介紹了JFINAL+Ajax傳參 array 數(shù)組方法 獲取request中數(shù)組操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Java中的HttpServletRequest接口詳細(xì)解讀
這篇文章主要介紹了Java中的HttpServletRequest接口詳細(xì)解讀,是一個(gè)接口,全限定名稱(chēng)為Jakarta.Serclet.http.HttpServletRequest2023-11-11
HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下
SpringBoot集成消息隊(duì)列的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot集成消息隊(duì)列的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
Mabatis錯(cuò)誤提示Parameter index out of range的處理方法
這篇文章主要介紹了Mabatis錯(cuò)誤提示Parameter index out of range 的處理方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
javaweb實(shí)戰(zhàn)之商城項(xiàng)目開(kāi)發(fā)(三)
這篇文章主要針對(duì)javaweb商城項(xiàng)目開(kāi)發(fā)進(jìn)行實(shí)戰(zhàn)演習(xí),主要實(shí)現(xiàn)通用的BaseDao.java和使用resultMap映射關(guān)聯(lián)對(duì)象,感興趣的小伙伴們可以參考一下2016-02-02

