如何将插入(insert)的记录id返回?
✨ 哈喽,屏幕前的每一位开发者朋友,你们好呀!✨
当你点开这篇文章时,或许正对着 IDE 里闪烁的光标发呆,或许刚解决一个卡了三天的 bug,正端着咖啡松口气 —— 不管此刻的你在经历什么,都想先和你说声:“辛苦了,同行者!” 👋
作为一名摸爬滚打多年的开发工程师,我始终觉得,我们敲出的每一行代码,不仅是业务逻辑的堆叠,更是无数个 “踩坑与爬坑” 的缩影。从第一次上线时的手忙脚乱,到如今能冷静应对突发 bug;从对着文档啃源码的迷茫,到能给新人讲清设计思路 —— 这些藏在键盘敲击声里的成长,太值得被好好梳理和分享了。 📝
所以,这一系列文章里,不会有太多高深的架构理论,也不会罗列晦涩的技术文档。我想聊的,是那些 “教科书里没写” 的实战细节:
比如上线前必做的 3 个自查动作(亲测能减少 80% 的线上问题)🛡️;
比如和产品经理 “友好沟通” 需求的 5 个小技巧(避免反复改需求到崩溃)🤝;
比如如何用最少的时间,快速定位线上性能瓶颈(曾靠这招拯救过一次紧急故障)🚀;
再比如那些看似 “浪费时间” 的重构,其实藏着怎样的长期价值…… ♻️
当然,更想和大家聊聊 “技术之外” 的事:如何平衡加班与生活(毕竟身体是敲代码的本钱)💪,如何在团队中清晰表达自己的想法(别让好方案被沉默埋没)🗣️,甚至是 “35 岁焦虑” 来袭时,我是如何调整心态的…… 🌱
如果你也和我一样,相信 “经验不是用来炫耀的资本,而是能帮同行少走弯路的路灯”,那不妨坐下来喝杯茶,一起在评论区聊聊:你最近遇到的最大挑战是什么?有没有哪个瞬间,让你觉得 “啊,原来我真的成长了”? 💬
毕竟,开发这条路从来不是孤军奋战。我们分享的每一个踩坑故事,都可能成为别人的指路牌;你留下的每一条评论,或许也会给我新的启发。 🌟
那么,准备好了吗?让我们开始这场 “代码背后的成长对话” 吧!接下来的每一篇,都等你来拍砖、补充、共鸣 —— 因为最好的经验,永远在交流里生长。 🌱
目录
一.场景
二.实现方式
三.总结
一.场景
下面这个mapper.xml是往table001表中,插入一条记录。
这种情况下,如何将本次插入的记录的id字段,返回出去,供我们在service层中使用?
<insert id="insertBnftChgInfo" parameterType="com.entity.TbnftAccChgInfo">INSERT INTO table001(ID,BEFC_OACT_BNK,BEFC_BNK_FN,BEFC_BNK_ACC_NAME,......省略字段APPL_DATE,MEMO) VALUES (#{id},#{befcOactBnk, jdbcType=VARCHAR},#{befcBnkFn, jdbcType=VARCHAR},#{befcBnkAccName, jdbcType=VARCHAR},......省略字段 #{applDate, jdbcType=INTEGER},#{memo, jdbcType=VARCHAR})
</insert>
二.实现方式
给insert标签,加上如下三个属性即可。
表示我们能获取生成的主键、并且将表的ID字段(主键)赋值到入参的id属性,然后就可以在service层中,通过实体类获取了。

<insert id="insertBnftChgInfo" parameterType="com.entity.TbnftAccChgInfo" useGeneratedKeys="true" keyProperty="id" keyColumn="ID">INSERT INTO table001(ID,BEFC_OACT_BNK,BEFC_BNK_FN,BEFC_BNK_ACC_NAME,......省略字段APPL_DATE,MEMO) VALUES (#{id},#{befcOactBnk, jdbcType=VARCHAR},#{befcBnkFn, jdbcType=VARCHAR},#{befcBnkAccName, jdbcType=VARCHAR},......省略字段 #{applDate, jdbcType=INTEGER},#{memo, jdbcType=VARCHAR})
</insert>

查看idea的控制台日志:

三.总结
无论这个表的主键,是通过自增实现的,还是通过某个函数实现的,都不挑,只要你的insert语句插入了主键,就能通过这种方式获取到本次插入记录的id字段,并在service层中使用。
以上就是本篇文章的全部内容,希望可以帮到你。
喜欢本篇文章的话,可以留个免费的关注呦~~~
