当前位置: 代码网 > it编程>编程语言>Java > Java中常见的数据验证注解总结大全

Java中常见的数据验证注解总结大全

2025年07月11日 Java 我要评论
1.@length功能:@length 用于验证字符串的长度是否在指定的范围内。适用场景:它只适用于字符串类型的字段。该注解可以用来限制字符串的最小长度和最大长度。常见用途:验证用户输入的文本(例如用

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 用于验证数字(如 intlongbigdecimal 等)是否在指定的范围内。

  • 适用场景:它通常用于数值类型的数据(如整数或浮动小数)。你可以指定数值的最小值和最大值。

  • 常见用途:验证用户输入的数字(例如年龄、评分等)是否在一个合理的范围内。

示例:

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数字(intlongbigdecimal 等)
常见用途限制文本长度(例如用户名、密码等)限制数字值(例如价格、年龄等)

总结:

  • @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 或空白字符串(包括只包含空格)
适用类型适用于任何类型的字段(stringinteger、对象等)仅适用于字符串类型的字段(string
验证条件只关注字段是否为 null确保字段非 null 且包含至少一个非空白字符
常见用途确保字段的值不能为 null确保字符串字段非空且不为空白

总结:

  • @notnull 主要用来确保字段不为 null,适用于任何类型的字段。

  • @notblank 主要用于字符串类型的字段,确保字段不仅不为 null,而且不为空字符串,也不包含仅空白字符。

使用场景:

  • 如果你想验证某个字段不能为 null,使用 @notnull

  • 如果你想验证某个字符串字段不能为 null 或者空白字符串,使用 @notblank

5.@min

  • 功能:@min 用于验证数值(如整数、浮点数等)是否大于或等于指定的最小值。

  • 适用场景:适用于基本数值类型(如 intlongfloatdouble 及其包装类),以及字符串表示的数值(需确保字符串可转换为数值类型)。

  • 常见用途:验证年龄下限、金额最小值、数量下限等场景。

示例:

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 用于验证集合(如 listset)、数组或字符串的大小(长度)是否在指定范围内。

  • 适用场景:适用于字符串、集合类、数组等可计算大小的对象。

  • 常见用途:验证列表长度、字符串长度、数组大小等场景。

示例:

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数据验证注解内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com