使用mybatis-generator生成的mapper执行insert时获取主键id
有时候,我们在往mysql数据库插入一行数据的同时,想要知道这一行数据的主键id。mybatis提供了2种获取自增主键的方式:一种是
在使用mybatis-generator 插件自动生成mapper.xml文件时,它们的配置示例分别如下:
在 table属性中做如下配置:
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
生成的mapper xml文件关于Insert的语句如下:
INSERT INTO user(name
, age
) VALUES(#{name}, #{age}) ;
在table中配置:
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
生成的mapper xml文件关于Insert的语句如下:
INSERT INTO user(`name`, `age`) VALUES(#{name}, #{age}) ;
<selectKey resultType="int" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
看mybatis-generator 关于generatedKey的[官方文档](https://mybatis.org/generator/configreference/generatedKey.html )关于 sqlStatement 设置为Mysql 或者 JDBC 的解释其实并不是很清楚知道这2者之间的差别。
我觉得:如果是使用Mysql数据库,并且 数据库的表 配置了 自增主键(auto increment),那么是可以将 sqlStatement 配置成 JDBC 的。因为:
> mybatis的 SelectKey 属性 本身是为了不支持返回自动生成主键的数据库而提供的,而且 通过 SelectKey 获取主键id,整个过程是:先 insert记录,再 `SELECT LAST_INSERT_ID()` ,这是两条SQL语句,要注意并发问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端