Java中常见的数据验证注解总结大全
作者:你好胖同学
1.@Length
功能:
@Length用于验证字符串的长度是否在指定的范围内。适用场景:它只适用于字符串类型的字段。该注解可以用来限制字符串的最小长度和最大长度。
常见用途:验证用户输入的文本(例如用户名、密码等)的长度是否满足要求。
示例:
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用于验证数字(如int、long、BigDecimal等)是否在指定的范围内。适用场景:它通常用于数值类型的数据(如整数或浮动小数)。你可以指定数值的最小值和最大值。
常见用途:验证用户输入的数字(例如年龄、评分等)是否在一个合理的范围内。
示例:
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 之间。
主要区别:
| 特性 | @Length | @Range |
|---|---|---|
| 验证类型 | 用于验证字符串的长度范围 | 用于验证数值(如整数、浮点数)的范围 |
| 适用数据类型 | 字符串(String) | 数字(int、long、BigDecimal 等) |
| 常见用途 | 限制文本长度(例如用户名、密码等) | 限制数字值(例如价格、年龄等) |
总结:
@Length是针对字符串类型的长度验证,主要用于限制字符串的最小和最大长度。@Range是针对数值类型的范围验证,主要用于限制数字的最小和最大值
3.@NotNull
功能:
@NotNull用于验证一个字段的值是否为null。如果该字段的值为null,则验证失败。适用场景:它适用于所有类型的字段(包括字符串、数字、对象等),用来确保该字段不能为
null。注意:
@NotNull不会验证空字符串 ("")、空集合或空数组,它只关注字段是否为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,验证将失败。
4.@NotBlank
功能:
@NotBlank用于验证一个字符串字段不能为null、不能为空字符串(""),并且不能只包含空白字符(如空格、制表符等)。它比@NotNull更严格,确保字符串不仅非空,还必须包含至少一个非空白字符。适用场景:它专门用于字符串类型的字段,确保字符串有有效的内容。
注意:
@NotBlank不仅会验证null,还会验证字符串是否为空或者只包含空格。
示例:
import javax.validation.constraints.NotBlank;
public class User {
@NotBlank(message = "Username cannot be blank")
private String username;
// getters and setters
}
- 在这个例子中,
@NotBlank确保username字段的值不能为null,也不能是一个空字符串或只包含空白字符。如果是,验证将失败。
主要区别:
| 特性 | @NotNull | @NotBlank |
|---|---|---|
| 验证内容 | 仅验证字段是否为 null | 验证字段是否为 null 或空白字符串(包括只包含空格) |
| 适用类型 | 适用于任何类型的字段(String、Integer、对象等) | 仅适用于字符串类型的字段(String) |
| 验证条件 | 只关注字段是否为 null | 确保字段非 null 且包含至少一个非空白字符 |
| 常见用途 | 确保字段的值不能为 null | 确保字符串字段非空且不为空白 |
总结:
@NotNull主要用来确保字段不为null,适用于任何类型的字段。@NotBlank主要用于字符串类型的字段,确保字段不仅不为null,而且不为空字符串,也不包含仅空白字符。
使用场景:
如果你想验证某个字段不能为
null,使用@NotNull。如果你想验证某个字符串字段不能为
null或者空白字符串,使用@NotBlank。
5.@Min
功能:
@Min用于验证数值(如整数、浮点数等)是否大于或等于指定的最小值。适用场景:适用于基本数值类型(如
int、long、float、double及其包装类),以及字符串表示的数值(需确保字符串可转换为数值类型)。常见用途:验证年龄下限、金额最小值、数量下限等场景。
示例:
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用于验证数值是否小于或等于指定的最大值。适用场景:与
@Min类似,适用于基本数值类型及可转换为数值的字符串。常见用途:验证年龄上限、金额最大值、数量上限等场景。
示例:
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用于验证集合(如List、Set)、数组或字符串的大小(长度)是否在指定范围内。适用场景:适用于字符串、集合类、数组等可计算大小的对象。
常见用途:验证列表长度、字符串长度、数组大小等场景。
示例:
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列表的元素数量必须在 1 到 10 之间。
总结
| 注解 | 适用类型 | 验证逻辑 | 示例参数 |
|---|---|---|---|
@Min | 数值类型(及可转换为数值的字符串) | 最小值约束(≥ 指定值) | @Min(18) |
@Max | 数值类型(及可转换为数值的字符串) | 最大值约束(≤ 指定值) | @Max(100) |
@Size | 字符串、集合、数组 | 大小/长度约束(min ≤ size ≤ max) | @Size(min=1, max=5) |
到此这篇关于Java中常见数据验证注解的文章就介绍到这了,更多相关Java数据验证注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
