Mybatis执行完新增操作后,对象的ID主键被修改了的原因【mybatis-spring-boot-starter开源项目的贡献者解答】

news/2024/7/10 19:15:33 标签: mybatis, 开源, java

Mybatis执行完新增操作后,对象的Id主键被修改了的原因

  • 问题由来
  • 问题分析
  • 解决方案
  • 感谢

问题由来

首先说下背景,项目的依赖是:mybatis-spring-boot-starter:1.3.2

进行新增操作后,一般来说入库就算完事了,但是除了我们需要把新增的ID返给前端或者新增时要把这个ID作为子表的外键对子表进行新增操作,此场景下突然就发现有点问题了,新增操作执行完也没报错的情况下,数据不对劲,经过排查发现了是对象在执行完InsertSQL后ID竟然改变了,不是我们set的。

首先跟下代码,看下问题

在这里插入图片描述
在这里插入图片描述
可以很清楚的看到insert执行前后对象的ID确实改变了,数据库入库的仍是我们自己set的UUID

在这里插入图片描述

问题分析

上面说到,发现了是ID变了,那么就要搞明白为啥变了,开始大概看了下,因为这个sql都是代码生成的,没做过改动,没有发现什么不对劲,所以去开源仓库mybatis/spring-boot-starter询问了下,这是issues地址
在这里插入图片描述

在这里插入图片描述

根据回复,我去项目中看了下项目的配置,果然如大佬所说

首先我打开了这个自动生成主键的策略

在这里插入图片描述

其次,看下mapper文件的sql语句,也有useGeneratedKeys="true"
在这里插入图片描述

解决方案

发现问题的原因那么解决起来就简单了,useGeneratedKeys改为fasle即可,下面验证下

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

果然修改后新增前后的对象ID就没有改变了,入库也没问题。

感谢

感谢这位mybatis-spring-boot-starter开源项目的贡献者的解答。

在这里插入图片描述

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/

看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]

在这里插入图片描述
加油!

共同努力!

Keafmd

感谢支持牛哄哄的柯南,期待你的三连+关注~~

keep accumulate for my dream【共勉】

                                                       ↓   ↓   ↓   ↓   ↓   ↓  


http://www.niftyadmin.cn/n/74016.html

相关文章

OA系统设计的要点总结

OA系统的设计的三大要点: 一、人事架构——变化的表象是以不变为根基。 作为公司办公系统,人事结构是整个系统的基础框架。OA系统是一款面向多角色,多权限分工明确的组织。因此,就需要设计一套标准的,可拓展的人事结…

Python pickle模块:实现Python对象的持久化存储

Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就是说,pickle 可以实现 Python 对象的存储及恢复。值得一提的是,pickle 是 python 语言的一个标准模…

CDGP 02-17-1

136、湖仓一体、批流一体、数据中台、隐私计算、data mesh、datafabric等都是目前数据架构中比较热门的话题。请从下列选项中选择描述正确的选项。 (知识点: CDGP仿真题)A.数据中台功能很多,其中主要的一个功能就是打通数据孤岛B.Data Fabric可以帮助解决在"多…

线性神经网络(线性回归)

线性回归 目录线性回归导包生成数据集观察散点图读取数据集初始化模型参数定义模型定义损失函数定义优化算法训练简易实现(pytorch)生成数据集读取数据集定义模型初始化模型参数定义损失函数定义优化算法训练导包 import random import torch from d2l import torch as d2l生成…

SAP 深入理解销售订单

突出特点: □SD的订单输入和配置能力被一家独立的咨询公司评为“最佳等级”。 □SD的定价能力也被一家独立的咨询公司评为“世界级”。 □在最大限度地扩大你成功的机会中,与其它R/3系统模块集成SD销售功能,将使每一销售作业阶段的数据输入…

双目客流统计方案的应用原理

双目客流统计客流摄像头采用立体视觉技术实现高度统计功能。基于视差原理。利用双镜头摄取的两幅图像的视差,构建三维场景,在检测到运动目标后。通过计算图像对应点间的位置偏差。获取目标的三维信息,在深度图像中对目标的检测与追踪&#xf…

Vue3路由传参

vue3路由和vue2差别不是很大,不过在传参形式上略有改变 在Vue3中使用路由必须引入 useRouter 和 useRoute import { useRoute, useRouter } from vue-routerconst Router useRouter() //跳转const Route useRoute() //获取到值 同Vue2一样,query使用p…

【算法】包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min…