唯一字段的修改

embedded/2025/3/1 13:07:41/

在我们进行开发中,有一个很常见的功能就是,我们要实现一张数据表中一个字段的唯一性。这个功能是很常见的,但是比较容易出错。主要是在修改的时候没有考虑到字段已经存在的问题。

假如,现在有一张数据表,里面有一个sole_code这个字段。我们要实现的是,在这张表中这个字段是唯一的。那么我们怎样实现

比较容易想到的一点是,我们在每次数据插入的时候。根据这个字段去数据库中查询。如果能查到数据,就表明这个字段已经存在了。我们就不能让这条数据就行插入了

如下所示:

Integer count= employeesRolesQueryExe.getBySolecode(employeesRolesCmd.getSoleCode());if(count>0){throw new ResultException(501,"角色编码已存在,请重新输入");}
   <select id="getBySolecode" resultType="java.lang.Integer">
select count(*) from employees_roleswhere  is_delete=0 and  sole_code = #{soleCode,jdbcType=VARCHAR}</select>

这个是我们比较容易想到的,那么我们修改的时候呢;

我们可以分为两步来操作。

我们修改数据一般是根据数据额度ID来进行数据的修改。

那么这时,我们可以把修改操作分为两步。

1、原编码值没有改变

当原编码值没有改变时,这就是一次普通的修改,我们直接执行SQL语句就好了。那么我们怎样判断原编码值有没有改变呢,我们可以根据ID来查询数据库中的数据信息与我们要修改数据信息进行比较

    EmployeesRolesVo employeesRolesVo= employeesRolesQueryExe.getById(employeesRolesCmd.getId());
//没有修改唯一代码if(Objects.equals(employeesRolesVo.getSoleCode(),employeesRolesCmd.getSoleCode())){employeesRolesDomain.updateEmployeesRolesInfo(EmployeesRolesAssembler.toEntity(employeesRolesCmd));
}else{
//  修改唯一代码,需要判断唯一代码是否重复Integer count = employeesRolesQueryExe.getBySolecode(employeesRolesCmd.getSoleCode());
if(count>0){throw new ResultException(501,"唯一代码已存在");
}else{employeesRolesDomain.updateEmployeesRolesInfo(EmployeesRolesAssembler.toEntity(employeesRolesCmd));
}}

2、原编码值已经改变

当原编码已经改变时,我们就又需要向新增一条数据一样。我们要根据这个编码值去数据库中进行查询,如果能查询到,就说明编码值已经存在,这边数据就不能修改。如果不能查询到,那么就说明这边数据可以正常修改

    EmployeesRolesVo employeesRolesVo= employeesRolesQueryExe.getById(employeesRolesCmd.getId());
//没有修改唯一代码if(Objects.equals(employeesRolesVo.getSoleCode(),employeesRolesCmd.getSoleCode())){employeesRolesDomain.updateEmployeesRolesInfo(EmployeesRolesAssembler.toEntity(employeesRolesCmd));
}else{
//  修改唯一代码,需要判断唯一代码是否重复Integer count = employeesRolesQueryExe.getBySolecode(employeesRolesCmd.getSoleCode());
if(count>0){throw new ResultException(501,"唯一代码已存在");
}else{employeesRolesDomain.updateEmployeesRolesInfo(EmployeesRolesAssembler.toEntity(employeesRolesCmd));
}}


http://www.ppmy.cn/embedded/169059.html

相关文章

自动化测试企业微信推送:群机器人(三)

前言&#xff1a;此文章主要讲解python通过群机器人发送文件 前置条件&#xff1a;群机器人已创建 代码逻辑&#xff1a; 1、通过企业微信的API文档&#xff0c;获取文件上传的media_id 2、获取到ID之后&#xff0c;发送群消息 代码&#xff1a; import os import time i…

Debian安装C语言环境

参考链接 gcc&#xff1a;https://my.oschina.net/emacs_8766486/blog/17213484 make&#xff1a;https://blog.csdn.net/m0_48096446/article/details/139989347 gdb&#xff1a;https://blog.csdn.net/kaixian2003/article/details/114642610 gcc 确保系统包列表是最新的…

基因型—环境两向表数据分析——品种生态区划分

参考资料&#xff1a;农作物品种试验数据管理与分析 用于品种生态区划分的GGE双标图有两种功能图&#xff1a;试点向量功能图和“谁赢在哪里”功能图。双标图的具体模型基于SD定标和h加权和试点中心化的数据。本例中籽粒产量的GGE双标图仅解释了G和GE总变异的53.6%&#xff0c;…

Node.js与MySQL的深入探讨

Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…

批量取消多个 Word 中的超链接

在 Word 文档中我们可以插入超链接&#xff0c;在打开 Word 文档后&#xff0c;点击超链接就可以跳转到对应的网址&#xff0c;如果我们不想让超链接跳转&#xff0c;就需要取消超链接。通过下面的教程&#xff0c;我们就可以知道如何批量取消 Word 文档中的所有超链接。 使用场…

Gatling介绍

Gatling&#xff1a;基于Scala的高性能负载测试工具 一、Gatling 简介 Gatling 是一个开源的 HTTP 压力测试工具&#xff0c;专为高并发场景设计&#xff0c;支持 HTTP/HTTPS、WebSocket、Kafka 等协议。其基于 Scala 的脚本语法简洁高效&#xff0c;支持实时报告生成和分布式…

web安全——分析应用程序

文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中&#xff0c;用户输入入口点包括&#xff1a; URL文件路径 通常&#xff0c;在查询字符?之前的URL部分并不视为用户输入入口&am…

《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

作者&#xff1a; 周志明 DeepSeek建议JVM书籍首选。 第一部分 走进Java 第1章 走进Java 世界上并没有完美的程序&#xff0c;但我们并不因此而沮丧&#xff0c;因为写程序本来就是一个不断追求完美的过程。 JAVA的优点&#xff0c;摆脱了平台的束缚&#xff0c;实现了一次…