alexfarm
V2EX  ›  Java

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

  •  
  •   alexfarm · Jan 10, 2021 · 3983 views
    This topic created in 2129 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
    micean
    Jan 10, 2021
    1
    如果用 batch 肯定是没有的
    用单次提交试试吧

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