Java 使用 mybatis-3.2.8,想获取批量插入记录的主键,求助

2021-01-10 13:18:31 +08:00
 alexfarm

尝试直接用 useGeneratedKeys,但公司的框架模版使用的 mybatis 依赖是 3.2.8 版本的,看了官网需要 3.3.1 才支持。如果在不修改 mybatis 依赖版本的情况下,除了插入后再查一次,如何能获取批量插入记录的主键呢?

2751 次点击
所在节点    Java
15 条回复
micean
2021-01-10 14:53:49 +08:00
如果用 batch 肯定是没有的
用单次提交试试吧

或者开事务,批量插入后查一次
340244120w
2021-01-10 15:11:06 +08:00
自己生成主键
alexfarm
2021-01-10 15:18:36 +08:00
@340244120w 自己生成就不能使用自增主键了啊,多节点还要处理唯一性啊
alexfarm
2021-01-10 15:20:52 +08:00
@micean 谢谢,先试试看单次提交
w292614191
2021-01-10 15:36:41 +08:00
selectkey
alexfarm
2021-01-10 16:42:52 +08:00
@w292614191 这个也不支持批量的
xiang0818
2021-01-10 21:30:31 +08:00
用分布式 Id 吧,事先生成主键会好点
Still4
2021-01-11 10:26:23 +08:00
升级版本,实在不想升级就参考支持的版本自己实现一遍,所以还是升级比较方便
shanghai1943
2021-01-11 10:29:31 +08:00
增加一个 uuid 字段,批量插入之后再根据 uuid 批量查询对应的自增 id
slyang5
2021-01-11 13:00:02 +08:00
自己生成主键 ID 吧 set 一下 再批量插入
RedBeanIce
2021-01-11 13:39:34 +08:00
@shanghai1943
@slyang5
在多台服务器的情况下,禁止程序自己生成主键,否则请求打到多台服务器,你生成的 id,可能会重复。
shanghai1943
2021-01-11 14:06:00 +08:00
额没看清题目。尴尬。
hiveex
2021-01-11 15:21:12 +08:00
他的 batch 源码里也是 for 循环去插入 你直接用 for 记下 id
wg20080215
2021-01-11 16:39:55 +08:00
@RedBeanIce 没毛病呀。 #9 的方案可以的,把 snowflake 生成的 UUID 字段作为非主键字段,插入数据库后拿着 UUID 去查 自增 ID 也可以的。不管你几台服务器 snowflake 都无所谓嘛
340244120w
2021-01-11 17:30:32 +08:00
@alexfarm #3
出了雪花外,美团的这个可以
https://github.com/Meituan-Dianping/Leaf

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/743519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX