V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alexfarm
V2EX  ›  Java

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

  •  
  •   alexfarm · 2021-01-10 13:18:31 +08:00 · 2752 次点击
    这是一个创建于 1408 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    15 条回复    2021-01-11 17:30:32 +08:00
    micean
        1
    micean  
       2021-01-10 14:53:49 +08:00
    如果用 batch 肯定是没有的
    用单次提交试试吧

    或者开事务,批量插入后查一次
    340244120w
        2
    340244120w  
       2021-01-10 15:11:06 +08:00 via iPhone
    自己生成主键
    alexfarm
        3
    alexfarm  
    OP
       2021-01-10 15:18:36 +08:00
    @340244120w 自己生成就不能使用自增主键了啊,多节点还要处理唯一性啊
    alexfarm
        4
    alexfarm  
    OP
       2021-01-10 15:20:52 +08:00
    @micean 谢谢,先试试看单次提交
    w292614191
        5
    w292614191  
       2021-01-10 15:36:41 +08:00
    selectkey
    alexfarm
        6
    alexfarm  
    OP
       2021-01-10 16:42:52 +08:00
    @w292614191 这个也不支持批量的
    xiang0818
        7
    xiang0818  
       2021-01-10 21:30:31 +08:00
    用分布式 Id 吧,事先生成主键会好点
    Still4
        8
    Still4  
       2021-01-11 10:26:23 +08:00
    升级版本,实在不想升级就参考支持的版本自己实现一遍,所以还是升级比较方便
    shanghai1943
        9
    shanghai1943  
       2021-01-11 10:29:31 +08:00
    增加一个 uuid 字段,批量插入之后再根据 uuid 批量查询对应的自增 id
    slyang5
        10
    slyang5  
       2021-01-11 13:00:02 +08:00
    自己生成主键 ID 吧 set 一下 再批量插入
    RedBeanIce
        11
    RedBeanIce  
       2021-01-11 13:39:34 +08:00
    @shanghai1943
    @slyang5
    在多台服务器的情况下,禁止程序自己生成主键,否则请求打到多台服务器,你生成的 id,可能会重复。
    shanghai1943
        12
    shanghai1943  
       2021-01-11 14:06:00 +08:00
    额没看清题目。尴尬。
    hiveex
        13
    hiveex  
       2021-01-11 15:21:12 +08:00
    他的 batch 源码里也是 for 循环去插入 你直接用 for 记下 id
    wg20080215
        14
    wg20080215  
       2021-01-11 16:39:55 +08:00
    @RedBeanIce 没毛病呀。 #9 的方案可以的,把 snowflake 生成的 UUID 字段作为非主键字段,插入数据库后拿着 UUID 去查 自增 ID 也可以的。不管你几台服务器 snowflake 都无所谓嘛
    340244120w
        15
    340244120w  
       2021-01-11 17:30:32 +08:00
    @alexfarm #3
    出了雪花外,美团的这个可以
    https://github.com/Meituan-Dianping/Leaf
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5126 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.