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

