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

java实体类常用参数验证

java实体类常用参数验证:

javax.validation.constraints  包的作用
该包提供了一系列注解,用于在 Java 应用中实现?数据验证逻辑?,帮助开发者快速、声明式地定义数据约束规则。主要作用包括:

简化数据校验
通过注解直接标记字段或方法的约束条件(如非空、范围、格式等),避免手动编写重复的校验代码。

统一校验标准
为不同层级(如实体类、DTO、API请求参数)提供一致的校验机制,适用于前端表单、后端服务、数据库交互等场景。

与框架集成
广泛支持主流框架(如 Spring、Hibernate、Quarkus),可无缝集成到 REST API、JPA 实体、表单提交等流程中。

一、验证类型

1、‌@AssertFalse

@AssertFalse
private boolean isInactive; // 表示该字段必须为false,例如表示一个不活跃的状态。

2、‌@AssertTrue

@AssertTrue
private boolean isActive; // 表示该字段必须为true,例如表示一个活跃的状态。

3、@DecimalMax

该注解用于确保被注解的元素(通常为BigDecimalString类型,表示数字)的值小于或等于指定的最大值。

@DecimalMax("100.00")
private BigDecimal maximumValue; // 表示该字段的值必须小于或等于100.00。

4、@DecimalMin

该注解用于确保被注解的元素(通常为BigDecimalString类型,表示数字)的值大于或等于指定的最小值。

@DecimalMin("0.01")
private BigDecimal minimumValue; // 表示该字段的值必须大于或等于0.01。

5、@Digits

该注解用于确保被注解的元素(通常为BigDecimalBigIntegerStringbyteshortintlong的包装类)的值的位数在指定的整数位数和小数位数范围内。

@Digits(integer = 5, fraction = 2)
private BigDecimal preciseValue; // 表示该字段的整数部分最多5位,小数部分最多2位。

6、@Email

该注解用于确保被注解的元素(通常为String类型)的值是一个有效的电子邮件地址。

@Email
private String emailAddress; // 表示该字段必须是一个有效的电子邮件地址。

7、@Future

该注解用于确保被注解的元素(通常为DateCalendarjava.time包下的日期时间类型)的值在当前日期的未来。

@Future
private LocalDate futureDate; // 表示该字段的值必须是未来的一个日期。

8、@FutureOrPresent

该注解用于确保被注解的元素(日期时间类型)的值在当前日期或未来。

@FutureOrPresent
private LocalDateTime futureOrPresentDateTime; // 表示该字段的值必须是当前时间或未来的时间。

9、@Max 

该注解用于确保被注解的元素(通常为BigIntegerLongIntShortByte或它们的包装类以及String类型,表示数字)的值小于或等于指定的最大值。

@Max(100)
private int maxValue; // 表示该字段的值必须小于或等于100。

10、@Min

该注解用于确保被注解的元素(数字类型)的值大于或等于指定的最小值。

@Min(1)
private int minValue; // 表示该字段的值必须大于或等于1。

11、@Negative

该注解用于确保被注解的元素(数字类型)的值为负数。

@Negative
private int negativeValue; // 表示该字段的值必须为负数。

12、@NegativeOrZero

该注解用于验证数字是否为负数或零。如果注解的字段值是正数,则会触发验证失败。

  @NegativeOrZero
    private int temperature;

13、@NotBlank

该注解用于验证字符串是否非空且至少包含一个字符。它通常用于验证如名称、地址等字符串字段。

   @NotBlank
    private String address;

14、‌@NotEmpty

该注解用于验证集合、数组或字符串是否非空。它适用于各种集合类型以及字符串。

    @NotEmpty
    private List<String> tags;

15、@NotNull

该注解用于验证对象是否不为 null。它适用于所有对象类型,确保字段被赋值。

    @NotNull
    private User user;

16、@Null

该注解用于验证对象是否为 null。它确保字段没有被赋值,适用于那些应该保持为空的字段。

    @Null
    private String temporaryField;//temporaryField 字段必须为 null。

17、‌@Past

该注解用于验证日期是否在现在之前。它适用于日期和时间类型的字段,确保日期是过去的某个时间点。

    @Past
    private Date startDate;

18、@PastOrPresent

该注解用于验证日期是否在现在之前或等于现在。它适用于需要确保日期不超过当前日期的场景。

    @PastOrPresent
    private Date eventDate;

19、@Pattern

该注解用于验证字符串是否匹配指定的正则表达式。它通常用于验证如电子邮件地址、电话号码等需要特定格式的字符串。

假设我们需要验证一个邮政编码,它必须是一个由5个数字组成的字符串。可以使用@Pattern注解如下:

@Pattern(regexp = "\\d{5}")
private String zipCode;

20、‌@Positive

该注解用于验证数字是否大于零。它通常用于确保数量、金额等字段的值是正数。

假设我们需要验证一个商品的数量,它必须是一个大于零的整数。可以使用@Positive注解如下:

@Positive
private int quantity;

21、‌@PositiveOrZero

该注解用于验证数字是否大于或等于零。它通常用于确保年龄、计数器等字段的值是非负数。

假设我们需要验证一个人的年龄,它必须是一个大于或等于零的整数。可以使用@PositiveOrZero注解如下:

@PositiveOrZero
private int age;

22、@Size

该注解用于验证集合、数组或字符串的大小是否在指定的范围内。它通常用于确保列表、数组等集合的长度符合特定要求。

假设我们需要验证一个标签列表,它的大小必须在1到10之间(包括1和10)。可以使用@Size注解如下:

@Size(min = 1, max = 10)
private List<String> tags;


@Size(min=2, max=100) 
private String password;

二、验证方式‌
1、在 Spring Boot 中校验请求体:重要注解  @Valid

@PostMapping("/getUsers")
public ResponseEntity<?> createUser(@Valid @RequestBody UserVO userVO) {
    // 校验通过后执行业务逻辑
}

2、POM引用

1)旧版本

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.5.Final</version>
</dependency>

2)新版本 

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.0.2</version>
</dependency>

 推荐使用新版本。

相关文章:

  • DepthAI ROS 安装与使用教程
  • 从传统 CLI 到自动化:网管协议( SNMP / NETCONF / RESTCONF)与 YANG
  • Java SE(2)——运算符
  • 艾尔登法环Steam不同账号存档互通方法与替换工具分享
  • nginx入门,部署静态资源,反向代理,负载均衡使用
  • 【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例
  • SCS翠鸟认证是什么,SCS翠鸟认证的意义?对企业发展好处
  • NO.88十六届蓝桥杯备战|动态规划-多重背包|摆花(C++)
  • SpringBoot 基础知识,HTTP 概述
  • 从递归入手一维动态规划
  • Java的内存模型
  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第二章导数与微分同步测试卷A卷
  • Java Lambda与方法引用:函数式编程的颠覆性实践
  • Soybean Admin 配置vite兼容低版本浏览器、安卓电视浏览器(飞视浏览器)
  • “pip“ is not recognized(pip无法被识别)
  • VBA即用型代码手册:书签Bookmarks
  • ARCGIS PRO 在已建工程地图中添加在线地图
  • Soybean Admin移除git-hooks永久关闭git校验
  • 【算法】——一键解决动态规划
  • spdlog高速日志系统