唯一值校验的实现思路(续)

ops/2025/2/12 17:38:41/

本文接着上一篇文章《唯一值校验的实现思路》,在后端实现唯一值校验。用代码实现。

/*** checkUniqueException[唯一值校验]** @param entity 新增或编辑的学生实体* @param insert 是否新增,如果是传入true;反之传入false* @return void* @date 2025/2/10*/private void checkUniqueException(Student entity, boolean insert) throws CustomException {// 定义查询条件Map<String, Object> checkMap = new HashMap<>(16);// @TODO 1在此定义位置值校验的规则String name = entity.getName();String carNum = entity.getCardNum();// 添加空值检查if (StringUtils.isEmpty(name) || StringUtils.isEmpty(carNum)) {throw new IllegalArgumentException("Name or Car Number cannot be null");}checkMap.put("name", name);checkMap.put("carNum", carNum);List<Student> studentList = studentDao.queryAccurate(checkMap);final String errMsg = name + "," + carNum + "的信息,不允许重复保存!";if (CollectionUtil.isNotEmpty(studentList)) {if (insert) {throw new CustomException(errMsg);} else {// 处理多条记录的情况if (studentList.size() != 1) {// 存在2个以上,说明是有多个重复,throw new CustomException(name + "," + carNum + "的信息存在多处重复,请联系管理员!");}checkUpdate(studentList.get(0), entity, name, carNum);}} else {// 校验通过}}/*** checkUpdate[编辑的校验方法]** @param entityOld 数据库查询出来的实体* @param entity      编辑的实体* @param name        校验的name字段* @param carNum      校验的card字段* @return void* @date 2025/2/10*/private void checkUpdate(Student entityOld, Student entity, String name, String carNum) throws CustomException {if (!Objects.equals(entityOld.getId(), entity.getId())) {// 新id和旧id不相等,说明,数据库已经存在了数据。不允许重复保存。throw new CustomException(name + "," + carNum + "的信息,不允许重复保存!");} else {// 校验通过}}


http://www.ppmy.cn/ops/157822.html

相关文章

步骤条和按钮联动(上一步下一步)

ImportMatchDrawer.vue <template><div class"import-drawer"><Drawer :title"props.titleName" ref"drawer" size"648"><!-- 内容 --><template #content><!-- 步骤条 --><CustomStep :step…

如何使用 webpack 来优化前端性能的?

Webpack 是一个强大的现代 JavaScript 应用程序的模块打包工具。它不仅可以将 JavaScript 文件打包,还可以处理 CSS、图片等资源。通过合理配置 Webpack,可以显著优化前端性能。本文将详细探讨如何使用 Webpack 来优化前端性能,包括基本概念、优化策略和实践示例。 1. Webp…

运行npm install卡住不动的

首先检查npm代理&#xff0c;是否已经使用国内镜像 // 执行以下命令查看是否为国内镜像 npm config get registry 如果不是则换成国内镜像&#xff0c;执行以下命令 npm config set registryhttps://registry.npmmirror.com //执行以下命令查看是否配置成功 npm config get …

使用Qt+opencv实现游戏辅助点击工具-以阴阳师为例

注&#xff1a;本文章技术交流使用&#xff0c;不侵犯任何著作权。 一. 阴阳师辅助软件需要实现哪些功能? 1.首先&#xff0c;对于肝绘卷拿角色而言&#xff0c;需要打困难28副本和结界突破循环刷绘卷碎片。这一功能让你每月免费悠闲地拿到最新角色&#xff0c;即使你是较新…

Redis的数据过期策略和数据淘汰策略

一、数据过期策略 Redis的key过期之后&#xff0c;会立即删除吗&#xff1f; 是否立即删除&#xff0c;这是根据Redis的数据过期策略来决定的 Redis对数据设值数据的过期时间&#xff0c;数据过期后&#xff0c;就需要将数据从内存中删除掉。可以按照不同的规则进行删除&…

使用Jenkins、K8S、Docker一键部署SpringCloud微服务

集成Jenkins、Kubernetes&#xff08;K8S&#xff09;和Docker&#xff0c;实现一键部署SpringCloud微服务。以下是具体的步骤&#xff1a; 步骤一&#xff1a;配置Jenkins 首先&#xff0c;我们需要安装并配置Jenkins。Jenkins是一个开源的持续集成/持续部署工具&#xff0c;…

智慧机房解决方案(文末联系,领取整套资料,可做论文)

智慧机房解决方案-软件部分 一、方案概述 本智慧机房解决方案旨在通过硬件设备与软件系统的深度整合&#xff0c;实现机房的智能化管理与服务&#xff0c;提升机房管理人员的工作效率&#xff0c;优化机房运营效率&#xff0c;确保机房设备的安全稳定运行。软件部分包括机房管…

kafka消费端之再均衡

文章目录 再均衡是指分区的所属权从一个消费者转移到另一消费者的行为&#xff0c;它为消费组具备高可用性和伸缩性提供保障&#xff0c;使我们可以既方便又安全地删除消费组内的消费者或往消费组内添加消费者。不过 在再均衡发生期间&#xff0c;消费组内的消费者是无法读取消…