使用javax.validation.constraints进行数据验证

使用javax.validation.constraints进行数据验证

在这里插入图片描述

在Java应用中,数据的验证是一个很重要的部分,特别是在接收用户输入或处理外部数据时。为了简化和标准化数据验证的过程,Java提供了javax.validation.constraints包,其中包含一系列注解,用于对Java对象进行验证。本文将详细介绍javax.validation.constraints包中的一些常用注解的使用方式和作用。

@AssertTrue 和 @AssertFalse

@AssertTrue注解用于验证注解的目标字段或方法返回值必须为true,而@AssertFalse注解则要求值必须为false。

public class User {
    @AssertTrue(message = "用户必须同意协议")
    private boolean agreed;
}

@DecimalMin 和 @DecimalMax

如果字段是BigDecimal或BigInteger类型,我们可以使用@DecimalMin和@DecimalMax注解进行验证,指定数值的最小值和最大值。

public class Product {
    @DecimalMin(value = "0.01", message = "价格必须大于等于0.01")
    private BigDecimal price;
}

@Digits

@Digits注解用于验证注解的目标字段的值必须是数字,并且整数位数和小数位数不能超过指定的值。

public class Product {
    @Digits(integer = 3, fraction = 2, message = "价格格式无效")
    private BigDecimal price;
}

@Email

@Email注解用于验证注解的目标字段的值必须是一个合法的电子邮件地址。

public class User {
    @Email(message = "邮箱格式无效")
    private String email;
}

@Future 和 @FutureOrPresent

@Future注解用于验证注解的目标字段的值必须是一个将来的日期,而@FutureOrPresent注解要求值必须是一个将来的日期或当前日期。

public class Event {
    @Future(message = "事件日期必须是将来的日期")
    private LocalDate eventDate;
}

@Max 和 @Min

@Max注解用于验证注解的目标字段的值必须小于或等于指定的最大值,而@Min注解用于验证注解的目标字段的值必须大于或等于指定的最小值。

public class Product {
    @Max(value = 100, message = "数量不能超过100")
    private int quantity;

    @Min(value = 1, message = "数量不能小于1")
    private int minimumQuantity;
}

@NotBlank 和 @NotEmpty

@NotBlank注解用于验证注解的目标字段的值不能为空或空格,而@NotEmpty注解则要求值不能为空。

public class User {
    @NotBlank(message = "姓名不能为空")
    private String name;

    @NotEmpty(message = "地址不能为空")
    private String address;
}

@NotNull 和 @Null

@NotNull注解用于验证注解的目标字段的值不能为null,而@Null注解则要求值必须为null。

public class User {
    @NotNull(message = "用户名不能为空")
    private String username;

    @Null(message = "用户ID必须为空")
    private Long userId;
}

@Past 和 @PastOrPresent

@Past注解用于验证注解的目标字段的值必须是一个过去的日期,而@PastOrPresent注解要求值必须是一个过去的日期或当前日期。

public class Event {
    @Past(message = "事件日期必须是过去的日期")
    private LocalDate eventDate;
}

@Pattern

@Pattern注解使用正则表达式验证注解的目标字段的值必须符合指定的模式。

public class User {
    @Pattern(regexp = "\\d{4}-\\d{2}-\\d{2}", message = "日期格式无效")
    private String birthDate;
}

@Positive 和 @PositiveOrZero

@Positive注解用于验证注解的目标字段的值必须是正数,而@PositiveOrZero注解要求值必须是正数或零。

public class Product {
    @Positive(message = "价格必须是正数")
    private BigDecimal price;
}

@Size

@Size注解用于验证注解的目标字段的值的长度必须在指定范围内。它适用于字符串、集合和数组等类型。

public class User {
    @Size(min = 6, max = 20, message = "密码长度必须在6到20之间")
    private String password;
}

通过使用这些验证注解,我们可以方便地对Java对象进行数据验证,确保其合法性和完整性。合理使用这些注解可以减少错误,并增加代码的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/53993.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

乳腺癌CT影像数据的深度学习:R语言与ANN神经网络构建高性能分类诊断模型

一、引言 乳腺癌是全球最常见的女性恶性肿瘤之一,也影响着男性的健康。据统计,每年有数百万人被诊断出患有乳腺癌[1]。乳腺癌的早期检测和准确诊断对于治疗和预后至关重要。然而,乳腺癌的早期诊断面临许多挑战,如图像解读的主观性…

uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)

uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效) 前言问题双向绑定示例使用 v-model使用 v-bind v-on使用 sync 修饰符 参考资料 前言 VUE中父子组件传递数据的基本套路: 父传子 props子传父 this.$emit(事件名, …

Linux安装VScode

从本篇开始,打算有时间就写写在VScode中编写一些ros相关的案例程序用于学习记录。本篇是如何在Linux安装VScode的第一篇。 一、下载VScode 在Linux中打开浏览器输入:https://code.visualstudio.com/Download,选择与你电脑相匹配的版本下载&…

AssertionError: CUDA_HOME does not exist, unable to compile CUDA op(s)

安装deepspeed的时候出现如下错误: 检查是否有CUDA: 根据提示安装: 安装完之后检测,重新安装,成功安装。 参考资料 A100单机多卡大模型训练踩坑记录(CUDA环境、多GPU卡住且显存100%)

socket 基础

Socket是什么呢? ① Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 ② Socket是连接运行在网络上的两个程序间的双向通信的端点。 ③ 网络通讯其实指…

STM32基础回顾

文章目录 单片机编程的原理GPIO中断EXTI外部中断定时器中断、串口中断 定时器定时器中断配置过程通用定时器输出比较功能:PWM波的生成定时器的输入捕获功能主从触发模式PWMI模式 定时器的编码器接口 DMA简介通信接口USART软件配置流程:1、仅发数据的配置…

校园跑腿小程序功能分享

提起校园跑腿小程序大家都不陌生,尤其是对上大学的伙伴们来说,更是熟悉得不能再熟悉了,和我们的生活息息相关,密不可分。 对于现在的年轻人来说,网购是非常简单和方便的一种购物方式,随之快递也会越来越多。在我们国家…

java版本spring cloud 企业工程系统管理 工程项目管理系统源码

 Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个&…

self-attention笔记

self-attention 对于self-attention的理解 对于self-attention,我们直觉可能会觉得是从一个大的数据中,将我们的注意力集中在我们感兴趣的区域里, 但通过self-attention的原理可以发现,其原理更像是对于一个区域(一个…

八大排序算法--希尔排序(动图理解)

目录 希尔排序 概念 算法思路 动画演示 代码如下 复杂度分析 时间复杂度测试 运行结果 完整代码 创作不易,如果本篇博客对您有一定的帮助,大家记得留言点赞哦。 希尔排序 概念 希尔排序是插入排序的一种,是对直接插入排序的优化。其…

uniapp小程序,根据小程序的环境版本,控制的显页面功能按钮的示隐藏

需求:根据小程序环境控制控制页面某个功能按钮的显示隐藏; 下面是官方文档和功能实现的相关代码: 实现上面需要,用到了uni.getAccountInfoSync(): uni.getAccountInfoSync() 是一个 Uniapp 提供的同步方法&#xff0c…

Acwing.875 快速幂

题目 给定n组ai , bi, pi,对于每组数据,求出akimod pi的值。 输入格式 第一行包含整数n。 接下来n行,每行包含三个整数ai , bi,pi。输出格式 对于每组数据,输出一个结果,表示aibimod pi的值。 每个结果占一行。 数…

Linux - 环境变量

1.基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,生…

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽,心谱落愁无序,旧时的誓言,曾而相似,河水在遵循河道的指引下,在曲折前进中放…

zookeeper学习(三)基础数据结构

数据模型 在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。 整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。 进入 zookeeper 安装的 …

心法利器[93] | 谈校招:技术面

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

大数据面试题:HBase的RegionServer宕机以后怎么恢复的?

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)HBase一个节点宕机了怎么办;2)HBase故障恢复 参考答案: 1、HBase常见故障 导…

抖音短视频seo矩阵系统源码开发部署技术分享

抖音短视频的SEO矩阵系统是一个非常重要的部分,它可以帮助视频更好地被搜索引擎识别和推荐。以下是一些关于开发和部署抖音短视频SEO矩阵系统的技术分享: 一、 抖音短视频SEO矩阵系统的技术分享: 关键词研究:在开发抖音短视频SEO矩…

助力保险行业数字化创新,麒麟信安参展2023中国财险科技应用高峰论坛

2023年7月27日,由中科软科技股份有限公司主办的“中国财险科技应用高峰论坛”在北京古北水镇成功举办。作为享誉中国保险科技界的盛会,本次活动以“数智保险 创新未来”主题,汇聚全国数百位保险公司主管领导、资深保险行业信息化专家&#xf…

【探讨】Java POI 处理 Excel 中的名称管理器

前言 最近遇到了一些导表的问题。原本的导表工具导不了使用名称管理器的Excel。 首先我们有两个Sheet。B1用的是名称管理器中的AAA, 而B2用的对应的公式。 第二个sheet,名为Test2: 这是一段简化的代码: public class Main {public static void mai…
最新文章