Spring Boot中常用的JSR 380参数校验注解

@NotNull: 验证对象值不应为 null。
@AssertTrue: 验证布尔值是否为 true。
@AssertFalse: 验证布尔值是否为 false。
@Min(value): 验证数字是否不小于指定的最小值。
@Max(value): 验证数字是否不大于指定的最大值。
@DecimalMin(value): 验证数字值(可以是浮点数)是否不小于指定的最小值。
@DecimalMax(value): 验证数字值(可以是浮点数)是否不大于指定的最大值。
@Positive: 验证数字值是否为正数。
@PositiveOrZero: 验证数字值是否为正数或零。
@Negative: 验证数字值是否为负数。
@NegativeOrZero: 验证数字值是否为负数或零。
@Size(min, max): 验证元素(如字符串、集合或数组)的大小是否在给定的最小值和最大值之间。
@Digits(integer, fraction): 验证数字是否在指定的位数范围内。例如,可以验证一个数字是否有两位整数和三位小数。
@Past: 验证日期或时间是否在当前时间之前。
@PastOrPresent: 验证日期或时间是否在当前时间或之前。
@Future: 验证日期或时间是否在当前时间之后。
@FutureOrPresent: 验证日期或时间是否在当前时间或之后。
@Pattern(regexp): 验证字符串是否与给定的正则表达式匹配。
@NotEmpty: 验证元素(如字符串、集合、Map 或数组)不为 null,并且其大小/长度大于0。
@NotBlank: 验证字符串不为 null,且至少包含一个非空白字符。
@Email: 验证字符串是否符合有效的电子邮件格式。

如何使用?

导入参数校验的依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

在实体类中需要校验的字段添加注解即可,如:

@Data
public class User {@NotBlank(message = "用户名不能为空")private String username;@NotBlank(message = "密码不能为空")private String password;@NotBlank(message = "邮箱不能为空")@Email(message = "邮箱格式不正确")private String email;@NotBlank(message = "手机号不能为空")@Size(min = 11, max = 11, message = "手机号少于11位")private String phone;@Min(value = 18, message = "年龄必须大于18岁")@Max(value = 100, message = "年龄不能大于100岁")private String age;
}

在控制器类中指定需要进行参数校验的类

@RequestMapping("/test")
@RestController
public class TestController {@PostMapping("/user")@ApiOperationlog(description = "测试接口")public Response testA(@RequestBody @Validated User user, BindingResult bindingResult){if (bindingResult.hasErrors()){//获取参数校验失败的信息String errorMessage = bindingResult.getFieldErrors().stream().map(FieldError::getDefaultMessage).collect(Collectors.joining(","));return Response.failed(errorMessage);}return Response.success();}
}
// @Validated注解指定需要校验的类
//BindingResult 校验结果

效果如下
入参

{"username":"123","password":"123","email":"@qq.com","phone":"123","age":"1000"}

响应


{"code": "201","message": "邮箱格式不正确,手机号少于11位,年龄不能大于100岁","data": null
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++11】右值引用和移动语义

文章目录 左值和右值的概念左值右值 左值与右值引用移动语义的概念std::move 的作用使用std::move的注意事项 右值引用的使用场景右值引用的其他概念万能引用完美转发std::forward万能引用和右值引用的区别 新的类功能默认成员函数 左值和右值的概念 在C中&#xff0c; 左值 和…

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展&#xff0c;基于 R S S I RSSI RSSI&#xff08;接收信号强度指示&#xff09;的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

面试题之- null和undefined的区别

前言 首先undefined和null都是基本数据类型&#xff0c;这两个基本数据类型分别都只有一个值&#xff0c;就是undefined和null。 undefined代表的含义是未定义&#xff0c;null代表的的含义是空对象&#xff0c;一般变量声明了但是还有没有定义的时候会返回undefined&#xf…

毕设 大数据抖音短视频数据分析与可视化(源码)

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕…

排队打水(贪心)

有 nn 个人排队到 11 个水龙头处打水&#xff0c;第 ii 个人装满水桶所需的时间是 titi&#xff0c;请问如何安排他们的打水顺序才能使所有人的等待时间之和最小&#xff1f; 输入格式 第一行包含整数 nn。 第二行包含 nn 个整数&#xff0c;其中第 ii 个整数表示第 ii 个人…

Python小示例——质地不均匀的硬币概率统计

在概率论和统计学中&#xff0c;随机事件的行为可以通过大量实验来研究。在日常生活中&#xff0c;我们经常用硬币进行抽样&#xff0c;比如抛硬币来决定某个结果。然而&#xff0c;当我们处理的是“质地不均匀”的硬币时&#xff0c;事情就变得复杂了。质地不均匀的硬币意味着…

Oracle 表空间异构传输

已经有了表空间的数据文件&#xff0c;和元数据dump文件&#xff0c;如何把这个表空间传输到异构表空间中&#xff1f; 查询异构传输平台信息&#xff1a; COLUMN PLATFORM_NAME FORMAT A40 SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM O…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之⑥:NL2SQL技术探讨

一、概述 NL2SQL&#xff08;Natural Language to SQL&#xff09;是一种将自然语言转换为结构化查询语言的技术。它可以帮助用户通过使用自然语言来与数据库进行交互&#xff0c;而无需了解复杂的SQL语法。 NL2SQL技术的背景&#xff1a; 随着人工智能的发展&#xff0c;越…

【Python】AudioFlux:音频与音乐分析的利器

AudioFlux 是一个专为音频和音乐分析、特征提取设计的开源 Python 库。它支持广泛的音频处理功能&#xff0c;包括特征提取、音高检测、时频分析、谱图处理等。这些功能被广泛应用于机器学习、深度学习、信号处理等领域&#xff0c;特别是对于音乐信息检索&#xff08;MIR&…

Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)

反向代理与跨域描述 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin Resource Sharing, CORS&#xff09;是指在浏览器中&#xff0c;当一个网页的脚本试图从一个域名&#xff08;协议、域名、端口&#xff09;请求另一个域名的资源时&#xff0c;浏览器会阻止这种请求…

顺丰Android面试题集锦及参考答案

TCP 三次握手和四次挥手是什么,挥手过程中主动方的状态是什么? TCP 三次握手是建立连接的过程: 第一次握手:客户端向服务器发送一个 SYN 报文,该报文包含客户端的初始序列号(seq=x)。此时客户端进入 SYN_SENT 状态。第二次握手:服务器收到客户端的 SYN 报文后,向客户端…

《精通开关电源设计》笔记一

重点 效率 纹波 环路响应 尺寸&#xff0c;从静态到动态的研究方法&#xff0c;假设开关电源稳态运行&#xff0c;以电感为中心&#xff0c;根据半导体器件(mos管或二极管)分段分析电路的状态&#xff0c;工具有电路原理和能量守恒 影响效率的主要是开关损耗&#xff0c;所以…

qemu模拟arm64环境-构建6.1内核以及debian12

一、背景 手头没有合适的arm64开发板&#xff0c;但是需要arm的环境&#xff0c;于是想到qemu模拟一个。除了硬件交互以外&#xff0c;软件层面的开发还是都可以实现的。 虚拟机还能自定义内存大小和镜像大小&#xff0c;非常适合上板前的验证&#xff0c;合适的话再买也不迟。…

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离 —— 2024-10-02 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离1.代码图片2.分析3.UML4.代码 1.代码图片 运行 Mouse button 1 pressed at (1…

掌控物体运动艺术:图扑 Easing 函数实践应用

现如今&#xff0c;前端开发除了构建功能性的网站和应用程序外&#xff0c;还需要创建具有吸引力且尤为流畅交互的用户界面&#xff0c;其中动画技术在其中发挥着至关重要的作用。在数字孪生领域&#xff0c;动画的应用显得尤为重要。数字孪生技术通过精确模拟现实世界中的对象…

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信&#xff08;IPC&#xff09;。同一个进程是在同一块地址空间中的&#xff0c;在不同的函数与文件以变量进程传递&#xff0c;也可通过形参传递。2个不同进程处于不同的地址空间&#xff0c;要互相通信有难度&#xff08;内存隔离的原…

华为海思:大小海思的双轮驱动战略分析

华为海思,作为华为旗下的半导体设计部门,近年来在芯片设计领域取得了显著成就,成为了中国乃至全球芯片设计的重要力量。实际上,华为海思并非单一实体,而是由两个主要分支构成:大海思和小海思。这两个分支虽然同属华为海思,但在定位、产品布局以及市场策略上有所不同,共…

【AI学习】Mamba学习(三):离散化SSM的矩阵计算

SSM离散化表示 除了连续的输入之外&#xff0c;还会通常碰到离散的输入(如文本序列)。所以SSM需要离散化形式&#xff0c;就是下面公式2和3。 SSM离散化过程 但是好奇这个离散化过程是如何进行的&#xff1f; 《一文通透想颠覆Transformer的Mamba&#xff1a;从SSM、HiPPO、…

JDBC 概述

JDBC 概述 JDBC的基本概念与功能JDBC的工作原理JDBC的组件与类JDBC的类型与特性JDBC的应用场景 JDBC&#xff08;Java Database Connectivity&#xff09;即Java数据库连接&#xff0c;是Java编程语言用于与数据库进行连接和操作的API&#xff08;应用程序编程接口&#xff09;…

9个微服务最佳实践

1⃣分离数据存储&#xff1a;独立数据库&#xff0c;提升灵活性。 2⃣代码成熟度一致&#xff1a;质量稳定&#xff0c;避免技术债务 3⃣独立构建流程&#xff1a;独自构建&#xff0c;快速部署。 4⃣单一职责原则&#xff1a;业务功能单一&#xff0c;简化维护。 5⃣容器化部署…