对象参数验证工具, 解决非controller层数据校验问题, @Validated、@Valid

工具类

package com.common;import com.common.SysException;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
import java.util.stream.Collectors;/**1. @author: 0i773. @Description: 对象参数验证工具, 解决非controller层数据校验问题, @Validated、@Valid*/
public class ValidationUtils {private static final Validator validator;static {validator = Validation.buildDefaultValidatorFactory().getValidator();}/*** 校验对象** @param object 待校验对象* @param groups 待校验的组* @throws SysException 校验不通过,则报业务异常*/public static void validateEntity(Object object, Class<?>... groups) {Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);if (!constraintViolations.isEmpty()) {String msg = constraintViolations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining("||"));throw new SysException(AppErrorCode.MESSAGE_NULL, msg);}}
}

参数校验具体测试

实体类中使用 @Validated、@Valid 注解即可实现

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

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

相关文章

Android TV 谷歌语音

Android TV 上的谷歌语音助手是一个强大的工具&#xff0c;它允许用户通过语音命令来控制电视设备、搜索内容、管理智能家居设备等。下面是一些关于在 Android TV 上使用谷歌语音助手的实战建议&#xff1a; 启用和设置&#xff1a; 确保你的 Android TV 设备已经连接到了互联…

【计算机毕业设计】超市进销存管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

揭秘ChatGPT技巧:高效撰写学术论文的专家秘笈

ChatGPT无限次数:点击直达 html 揭秘ChatGPT技巧&#xff1a;高效撰写学术论文的专家秘笈 揭秘ChatGPT技巧&#xff1a;高效撰写学术论文的专家秘籍 在当今信息爆炸的时代&#xff0c;如何高效撰写学术论文成为许多研究者和学生关注的焦点。ChatGPT是一款人工智能助手&…

PostgreSQL入门到实战-第八弹

PostgreSQL入门到实战 PostgreSQL数据过滤(一)官网地址PostgreSQL概述PostgreSQL的where子命令介绍PostgreSQL的where子命令实操更新计划 PostgreSQL数据过滤(一) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://ww…

数据结构---顺序表实现

目录 1.顺序表 2.动态顺序表的实现 &#xff08;4&#xff09;顺序表初始化 &#xff08;5&#xff09;顺序表销毁 &#xff08;6&#xff09;顺序表的插入 a.尾插 b.头插 &#xff08;7&#xff09;顺序表的删除 a.尾删 b.头删 &#xff08;8&#xff09;指定位置之…

程序员编程电脑的配置一般需要满足什么样的要求?

处理器&#xff08;CPU&#xff09;&#xff1a;推荐选择Intel Core i5或AMD Ryzen 5及以上的处理器&#xff0c;适用于一般编程任务。对于更复杂的任务如大型项目编译或虚拟化技术&#xff0c;建议选择Intel Core i7或AMD Ryzen 7等更高端处理器。 内存&#xff08;RAM&#…

大话设计模式之桥接模式

桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过提供一个桥接接口来实现这种分离&#xff0c;使得抽象部分和实现部分可以在运行时独立地进行修改。 桥接模式主要由两个部分组成&#xff1a;抽象部分…

Chat Ollama docker部署及运行 本地大语言模型+本地知识库搭建 强烈推荐

背景介绍 Ollama 是目前最流行的大模型本地化工具之一。 Ollama 支持一系列开源大模型&#xff0c;包括主流的聊天模型和文本嵌入模型&#xff08;Embedding Models&#xff09;等。 ChatOllama 是基于 Ollama 的 Web 应用&#xff0c;它可以让用户直接在浏览器中使用 Ollama。…

解锁电气数据新价值:SolidWorks Electrical助力企业转型

在信息化、数字化的时代&#xff0c;电气数据库已成为企业不可或缺的核心资产。它以其独特的功能和优势&#xff0c;助力企业在激烈的市场竞争中脱颖而出&#xff0c;实现数字化转型的跨越式发展。 SolidWorks Electrical电气数据库具备强大的数据整合能力。它能够将企业内部各…

C语言生成大模型代码

C语言生成大模型代码 在C语言中生成大模型代码并不是一个常见的任务&#xff0c;因为C语言通常用于编写系统级或应用级的程序&#xff0c;而不是用于机器学习或深度学习模型的开发。大模型代码通常指的是深度学习框架&#xff08;如TensorFlow、PyTorch等&#xff09;中用于训…

算法之图算法

1、广度优先搜索&#xff1a; package com.arithmetic.graph; import java.util.LinkedList; import java.util.Queue; //定义一个邻接矩阵用于表示图的结构&#xff0c;0表示两个节点之间没有边&#xff0c;1表示有边连接。 //然后使用一个布尔数组visited来标记节点是否被访…

keep-alive包裹的两个页面使用了echart,在resize后切换,echart会出现空白现象,需要再resize才会出现

问题&#xff1a;页面有2个echarts图&#xff0c;一打开页面图表是有的&#xff0c;然后切换到另一个页面&#xff0c;也是有2个echarts图&#xff0c;然后缩放浏览器窗口&#xff0c;再切换回第一次打开的页面&#xff0c;图表不显示。 因为keep-live保存了当前页面的属性&am…

Knife4j的配置

要使用Knife4j&#xff0c;需要进行以下配置步骤&#xff1a; 在pom.xml文件中添加依赖&#xff1a; <!-- Knife4j --> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><v…

Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录 一、基础的命令 <1> ps axj 命令 <2> top 命令 <3> proc 目录 二、进程的标识符 <1>范围 <2>如何获取标识符 <3>bash进程 三、创建进程 一、基础的命令 前面介绍了那么多&#xff0c;但是我们没有观察到进程相关状态&#x…

js把数组中的某些项移动到前面,使用sort函数

在JavaScript中&#xff0c;使用sort函数可以按照特定的规则对数组进行排序。如果你想根据特定的条件把数组中的某些项移动到前面&#xff0c;你可以使用sort函数来实现这一点。以下是一个例子&#xff0c;演示了如何使用sort函数把满足特定条件的数组项移动到数组的前面&#…

机器人码垛机的技术特点与应用

随着科技的飞速发展&#xff0c;机器人技术正逐渐渗透到各个行业领域&#xff0c;其中&#xff0c;机器人码垛机在物流行业的应用尤为引人瞩目。它不仅提高了物流效率&#xff0c;降低了成本&#xff0c;更在改变传统物流模式的同时&#xff0c;为行业发展带来了重大的变革。 一…

MQ死信队列:面试题

所谓的死信队列只不过是我们自己定义的一个队列&#xff0c;注意对于这个队列只能人工干预 面试题&#xff1a;你们是如何保证消息不会丢失的 1&#xff0c;什么是死信 在RabitMQ中充当主角的就是消息&#xff0c;在不同场景下&#xff0c;消息会有不同地表现。 死信就是在…

python蓝桥杯选数

文章目录 前言一、题意二、代码1.代码的实现2.读入数据 总结 前言 本题涉及到很多python中的知识点&#xff0c;比如combinations&#xff08;列表的组合&#xff09;应用&#xff0c;以及素数的判断 一、题意 已知 n 个整数 x1,x2,…,xn,以及一个整数 k&#xff08;k&#x…

SQL 批量替换表中某一列字段的值

现有客户数据如下&#xff0c;需要将表 t_109_original&#xff0c;中的FILE_PATH 字段里面值含 P9_3 全部替换为 P9_4 FILE_SIZEFILE_PATHFILE_NAME167376P9_3/original/12/109/35/0/35.jpg0103-Y-.DJ.G-第1号-0001-001-0002.jpg169230P9_3/original/12/109/36/0/36.jpg0103-…

SpringBoot学习笔记三-原理分析

SpringBoot学习笔记三-原理分析 SpringBoot自动装配1.1 案例1.2 通过注解方式管理Bean1.3 小结1.4 Enable注解1.5 Import注解1.5.1 ImportSelector实现类1.5.2 导入ImportBeanDefinitionRegistrar 1.5 EnableAutoConfiguration1.6 案例 SpringBoot自动装配 当再pom.xml中导入对…