Mybatis获取自增主键并发问题,Jdbc3KeyGenerator

已知:
在数据库表自增的情况下,mybatis执行完一条insert sql后,Jdbc3KeyGenerator获取主键的逻辑,是在insert语句后获取最大的id。

场景:
线程A:插入insert语句先执行,然后执行Jdbc3KeyGenerator获取最大的id。
那么在线程A的Jdbc3KeyGenerator获取最大id前一时刻,线程B:又有insert语句执行了。

问:
那线程A获取到的id是线程B执行insert后的id,还是线程A执行insert的id。

mybatis
数据库
mysql
2022-11-24 13:21:42
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
区之里间
2

不说数据库的情况下,就默认你是mysql吧,对于获取自增id的场景,mysql是插入完以后执行select LAST_INSERT_ID()就能获取到最大id(oracle在插入前,这点不同),mybatis做的也就是这样了,至于获取具体的数值,那是数据库对于这个的处理,特意试了下,开启事务以后,A事务先插入,但是不查询LAST_INSERT_ID(),B事务一次操作完,在B事务不管是否提交,A执行select LAST_INSERT_ID都是获取自己插入后的id,并没有串到B的id

分享
微博
QQ
微信
回复
2022-11-24 15:27:37
相关问题
并发问题和内存数据刷盘问题
4079浏览 • 1回复 待解决
HarmonyOS 按需分发问题
49浏览 • 1回复 待解决
HarmonyOS Web组件开发问题咨询
158浏览 • 1回复 待解决
sharding-jdbc分库分表的问题
1899浏览 • 1回复 待解决
HarmonyOS 子组件内如何获取自身大小
321浏览 • 1回复 待解决
mysql 自字段如何重设?
2664浏览 • 1回复 待解决
HarmonyOS 多线程并发相关问题
153浏览 • 1回复 待解决
HarmonyOS har包如何获取自身的版本号
392浏览 • 1回复 待解决
JSUI中TouchMove连续触发问题
3553浏览 • 1回复 待解决
数据库主键字段的问题有知道的吗?
2634浏览 • 1回复 待解决
这句sql会导致并发问题吗 ?
2101浏览 • 1回复 待解决
聊一聊DS的低代码开发问题
6267浏览 • 1回复 待解决
HarmonyOS字符串SHA-1开发问题
348浏览 • 1回复 待解决
mybatis 多个参数时,如何用in?
2096浏览 • 1回复 待解决