javax.validation.constraints注解使用

 更新时间:2024年07月03日 16:40:46   作者:霁月清风与谁同  
这篇文章主要介绍了javax.validation.constraints注解使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

javax.validation.constraints注解

javax.validation.constraints是Java Validation API中的一个包,它提供了一组注解,用于在Java代码中进行数据校验和验证。

该包中定义了多个注解,用于标记属性或方法参数的验证规则。

开发者可以通过在对象的属性上添加这些注解,来定义相应的验证规则。

常用的注解

@NotNull:用于标记属性或方法参数不能为null。

  • 适用于任何类型的属性或方法参数。
  • 不能用于基本数据类型,因为它们不接受null值。

@NotEmpty

  • 用于标记字符串、集合、Map等类型的属性或方法参数不能为null且不能为空。
  • 适用于String、Collection、Map和数组类型的属性或方法参数。

@NotBlank

  • 用于标记字符串类型的属性或方法参数不能为null且包含至少一个非空格字符。
  • 适用于String类型的属性或方法参数。

@Min

  • 用于标记数值类型的属性或方法参数的最小值。
  • 适用于byte、short、int、long和对应的包装类类型的属性或方法参数。

@Max

  • 用于标记数值类型的属性或方法参数的最大值。
  • 适用于byte、short、int、long和对应的包装类类型的属性或方法参数。

@Size

  • 用于标记字符串、集合、Map等类型的属性或方法参数的大小范围。
  • 可以用于String、Collection、Map和数组类型的属性或方法参数。
  • 必须指定大小范围,例如@Size(min=2, max=10)。

@Pattern

  • 用于标记字符串类型的属性或方法参数的正则表达式验证规则。
  • 适用于String类型的属性或方法参数。
  • 必须指定正则表达式,例如@Pattern(regexp=“^[a-zA-Z0-9]+$”)。

@Email

  • 用于标记字符串类型的属性或方法参数必须符合电子邮件地址的格式。
  • 适用于String类型的属性或方法参数。
  • 验证字符串是否符合电子邮件地址的格式。

其他注解

  • @Past:用于验证日期或时间类型的属性或方法参数必须在当前时间之前。
  • @Future:用于验证日期或时间类型的属性或方法参数必须在当前时间之后。
  • @URL:用于验证字符串类型的属性或方法参数必须符合URL的格式。
  • @IP:用于验证字符串类型的属性或方法参数必须符合IP地址的格式。

这些注解仅提供了基本的验证规则,可以根据实际需求进行组合和自定义注解以满足特定的验证需求。此外,还可以使用继承和组合注解来扩展验证规则

javax.validation.constraints中@NotBlank和@NotEmpty的区别

在Java的javax.validation.constraints包中,@NotBlank和@NotEmpty是用于验证属性值非空的注解,它们之间有一些区别。

@NotBlank

@NotBlank 用于验证一个字符串是否为非空,它会去除字符串两端的空格后再判断是否为空。

@NotBlank 可以用在 String 类型的字段上。

例如,@NotBlank 用在一个 String 类型的字段上,如果该字段为 null、空字符串或只包含空格,都会触发验证失败。

示例:

public class User { @NotBlank private String username; }

@NotEmpty

@NotEmpty 用于验证一个集合(Collection)、Map、数组或字符串是否非空,它不会去除字符串两端的空格,而是直接判断是否为空。

@NotEmpty 可以用在 Collection、Map、数组和 String 类型的字段上。

例如,@NotEmpty 用在一个集合类型的字段上,如list 或 JSONArray,如果该集合为空,会触发验证失败。

示例:

public class User { @NotEmpty private List<String> phoneNumbers; }

    @ApiModelProperty("结束日期(包含)")
    @NotNull
    private Date endDate;
 
    @ApiModelProperty("任务生成周天(1,2,3,4,5,6,7)")
    @NotNull
    private String weekDay;
 
    @ApiModelProperty("巡检当天时间班次")
    @NotEmpty
    private JSONArray period;

心得

  • @NotBlank 主要用于验证字符串类型的字段是否非空,会去除两端空格后再进行判断。
  • @NotEmpty 用于验证集合、Map、数组或字符串类型的字段是否非空,不会去除空格,直接判断是否为空。

根据具体的需求,你可以选择使用 @NotBlank 或 @NotEmpty 进行属性非空的验证。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在CentOS上安装Java 17并实现多版本共存的详细教程

    在CentOS上安装Java 17并实现多版本共存的详细教程

    在现代软件开发中,Java 作为一种广泛使用的编程语言,其版本更新频繁,不同项目可能依赖不同版本的 Java 运行环境,CentOS 作为一款流行的 Linux 发行版,常被用于服务器部署和开发环境,本文将详细介绍如何在 CentOS 上安装 Java 17,并实现与现有 Java 8 的多版本共存
    2025-03-03
  • SpringBoot项目部署的四种方式详解

    SpringBoot项目部署的四种方式详解

    本文详细介绍了SpringBoot项目的四种部署方式,包括原始命令部署、宝塔Linux可视化部署、Docker容器化部署和Docker容器平台托管,每种方式都有其特点和适用场景,需要的朋友可以参考下
    2026-04-04
  • Struts2学习笔记(2)-路径问题解决

    Struts2学习笔记(2)-路径问题解决

    本文主要介绍Struts2的路径问题,尽量不要使用相对路径,使用相对路径会让路径问题变得很繁琐很麻烦,推荐使用绝对路径,希望能给大家做一个参考。
    2016-06-06
  • Spring IOC与DI核心深入理解

    Spring IOC与DI核心深入理解

    IOC也是Spring的核心之一了,之前学的时候是采用xml配置文件的方式去实现的,后来其中也多少穿插了几个注解,但是没有说完全采用注解实现。那么这篇文章就和大家分享一下,全部采用注解来实现IOC+DI
    2023-02-02
  • SpringBoot结合mybatis-plus实现分页的项目实践

    SpringBoot结合mybatis-plus实现分页的项目实践

    本文主要介绍了SpringBoot结合mybatis-plus实现分页的项目实践,主要基于MyBatis-Plus 自带的分页插件 PaginationInterceptor,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • SpringMVC基于注解方式实现上传下载

    SpringMVC基于注解方式实现上传下载

    本文主要介绍了SpringMVC基于注解方式实现上传下载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • SpringBoot参数校验,消除if else方式

    SpringBoot参数校验,消除if else方式

    文章介绍了使用JSR303和Spring Boot中的spring-boot-starter-validation进行数据验证的方法,包括注解使用、分组验证、嵌套对象校验、快速失败配置以及自定义校验规则等内容
    2026-04-04
  • MyBatis一对多嵌套查询的完整实例

    MyBatis一对多嵌套查询的完整实例

    这篇文章主要给大家介绍了关于MyBatis一对多嵌套查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • SpringBoot+Redis防止恶意刷新与暴力请求接口的实现

    SpringBoot+Redis防止恶意刷新与暴力请求接口的实现

    这篇文章主要为大家介绍了如何利用springboot和Redis来实现防止恶意刷新与暴力请求接口,文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • SpringBoot配置application.yml时遇到的错误及解决

    SpringBoot配置application.yml时遇到的错误及解决

    这篇文章主要介绍了SpringBoot配置application.yml时遇到的错误及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论