美文网首页
2025-08-29

2025-08-29

作者: 风一样的存在 | 来源:发表于2025-08-28 18:07 被阅读0次

    问题:插入新数据无法回填所有记录的主键,只回填第一条记录

    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_rate_plan_mapping 
            (meal_type, meal_unit, cancel_policy)
        VALUES
            <foreach collection="list" item="item" separator=",">
                (
                    #{item.mealType},
                    #{item.mealUnit},
                    #{item.cancelPolicy}
                )
            </foreach>
    </insert>
    

    解决方案:

    jdbc:mysql://host:port/db?useSSL=false&useAffectedRows=false&rewriteBatchedStatements=true

    useAffectedRows=false:禁用“受影响行数”模式(默认可能为 true),确保返回正确的生成 ID(否则批量插入时可能只返回 1 条影响的 ID)。
    rewriteBatchedStatements=true:启用 JDBC 批量语句重写(将 foreach 生成的多个 VALUES 合并为 VALUES (...),(...) 的一条 SQL),提升性能并支持回填所有 ID。

    相关文章

      网友评论

          本文标题:2025-08-29

          本文链接:https://www.haomeiwen.com/subject/kdbeajtx.html