当前位置: 首页 > article >正文

快速进行数据验证的优雅实现-注解

javax.validation包下的注解主要用于数据验证,确保数据符合特定的约束条件。以下是一个详细的表格,列出了这些注解的名称、作用、使用场景和示例:

Excel 表格示例

注解名称作用使用场景示例
@AssertFalse确保字段值为 false布尔字段的验证@AssertFalse private boolean active;
@AssertTrue确保字段值为 true布尔字段的验证@AssertTrue private boolean active;
@DecimalMax确保字段值小于或等于指定的最大值数值字段的验证@DecimalMax("100.00") private BigDecimal price;
@DecimalMin确保字段值大于或等于指定的最小值数值字段的验证@DecimalMin("10.00") private BigDecimal price;
@Digits确保字段值的数字部分和小数部分的位数符合指定要求数值字段的验证@Digits(integer=5, fraction=2) private BigDecimal amount;
@Future确保字段值是一个未来的日期日期字段的验证@Future private Date startDate;
@FutureOrPresent确保字段值是一个未来的日期或当前日期日期字段的验证@FutureOrPresent private LocalDate startDate;
@Max确保字段值小于或等于指定的最大值数值字段的验证@Max(100) private int age;
@Min确保字段值大于或等于指定的最小值数值字段的验证@Min(18) private int age;
@NotNull确保字段值不为 null通用字段的验证@NotNull private String name;
@Null确保字段值为 null通用字段的验证@Null private String name;
@Past确保字段值是一个过去的日期日期字段的验证@Past private Date birthDate;
@PastOrPresent确保字段值是一个过去的日期或当前日期日期字段的验证@PastOrPresent private LocalDate birthDate;
@Pattern确保字段值符合指定的正则表达式字符串字段的验证@Pattern(regexp="^[a-zA-Z0-9_]+$") private String username;
@Size确保字段值的长度在指定范围内字符串、集合、数组等的验证@Size(min=5, max=10) private String password;
@Range确保字段值在指定范围内数值字段的验证@Range(min=18, max=60) private int age;
@Valid用于嵌套验证,确保对象的属性也符合验证规则对象字段的验证@Valid private User user;
@Validate用于嵌套验证,确保对象的属性也符合验证规则对象字段的验证@Validate private User user;
@Validated用于类或方法级别的验证类或方法的验证@Validated public class MyService {}
@Constraint定义自定义验证注解创建自定义注解时@Constraint(validatedBy = MyValidator.class) @interface MyCustomAnnotation {}
@GroupSequence定义验证组的顺序创建自定义验证组时@GroupSequence({Default.class, MyGroup.class}) public class MyEntity {}
@GroupSequenceProvider提供动态验证组的顺序创建自定义验证组时@GroupSequenceProvider(MyGroupSequenceProvider.class) public class MyEntity {}

DEMO示例:

import javax.validation.constraints.*;

public class User {

    @NotNull(message = "Name cannot be null")
    @Size(min = 2, max = 50, message = "Name must be between 2 and 50 characters")
    private String name;

    @Min(value = 18, message = "Age must be at least 18")
    @Max(value = 100, message = "Age must be at most 100")
    private int age;

    @NotNull(message = "Email cannot be null")
    @Email(message = "Email must be valid")
    private String email;

    @NotNull(message = "Password cannot be null")
    @Size(min = 8, max = 50, message = "Password must be between 8 and 50 characters")
    private String password;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

http://www.kler.cn/a/591598.html

相关文章:

  • 从PLC到云端:5G嵌入式网关的MQTT协议转换与Ubuntu二次开发全解析
  • VLLM:虚拟大型语言模型(Virtual Large Language Model)
  • AI Agent如何通过自然语言处理提升交互体验
  • 【图像处理】ISP(Image Signal Processor) 图像处理器的用途和工作原理?
  • 机器学习 [白板推导](二)[线性回归]
  • 【Go】运算符笔记
  • 安装并使用anaconda(宏观版)
  • HTML,CSS,JavaScript
  • 微服务即时通信系统---(五)框架学习
  • 解决Spring Boot中Chrome浏览器Session ID频繁变动的问题
  • 基于 ELK、Python、OLaMA 和飞书群的 AI 自动化巡检方案
  • Druid 连接池工具类及其在企业级应用中的实践
  • Linux IP 配置
  • QT 学习笔记2
  • win/linux开机启动exe程序
  • AT指令集-NBIOT
  • 明基PD2700U显示器无法调节图像模式
  • Qt窗口控件之字体对话框QFontDialog
  • 【css酷炫效果】纯CSS实现进度条加载动画
  • Go 语言 `map` 详解