V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
alexfarm
V2EX  ›  Java

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

  •  
  •   alexfarm · Jan 10, 2021 · 3471 views
    This topic created in 1936 days ago, the information mentioned may be changed or developed.

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

    15 replies    2021-01-11 17:30:32 +08:00
    micean
        1
    micean  
       Jan 10, 2021
    如果用 batch 肯定是没有的
    用单次提交试试吧

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