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

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

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;
    }
}

相关文章:

  • DeepSeek + 药物研发:解决药物研发周期长、成本高-降低80%、失败率高-减少40%
  • Flink 初体验:从 Hello World 到实时数据流处理
  • pxe的作用与原理
  • 【Linux内核系列】:进程板块与文件板块的综合
  • 网络安全证书培训机构有哪些
  • 普通链接与whole-archive方式
  • Java 8 Stream API:传统实现和流式编程的范式对比
  • Java基础编程练习第33题-有序数组插入元素
  • 【嵌入式】ESP_01S智能家居:可二次开发式智能灯控/门禁,勾勒智能生活新图景
  • 基于Python pyscard库采集ACS ACR122U NFC读卡器数据的详细操作步骤
  • AI日报 - 2025年3月18日
  • java,poi,提取ppt文件中的文字内容
  • Launcher3 Hotseat区域动态插入All Apps按钮实现方案
  • 理解Akamai EdgeGrid认证在REST API中的应用
  • 数字孪生概念及示例【清晰易懂】
  • 【并发编程】synchronized 的底层原理
  • 微服务》》Kubernetes (K8S)安装
  • go语言学习教程推荐,零基础到做项目
  • 【JavaScript】一、JS的引入与输入输出
  • 0基础 | 直流稳压电源专题3
  • 上海公办小学验证今起开始,下周一和周二分区进行民办摇号
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 中期选举后第三势力成“莎拉弹劾案”关键,菲律宾权斗更趋复杂激烈
  • 马上评|清理“滥竽充数者”,为医者正名
  • “大型翻车现场”科技满满,黄骅打造现代化港口和沿海新城典范