千家信息网

Mybatis如何批量插入并返回主键id

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"Mybatis如何批量插入并返回主键id",在日常操作中,相信很多人在Mybatis如何批量插入并返回主键id问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2026年11月04日Mybatis如何批量插入并返回主键id

这篇文章主要介绍"Mybatis如何批量插入并返回主键id",在日常操作中,相信很多人在Mybatis如何批量插入并返回主键id问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Mybatis如何批量插入并返回主键id"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

场景

在做商城的时候,sku表进行了拆分,sku的基本信息以及sku的库存表。因为库存会经常的变动,会导致行锁。

这里就是新增的时候,因为在新增商品的时候,会有多条sku的数据进行批量的插入,那么有批量插入sku基本信息以及批量插入sku的库存信息。

其中,就需要批量插入sku的基本信息的时候,返回主键id,这就能够在sku批量插入库存信息的时候能够插入skuId;

错误

nested exception is org.apache.ibatis.executor.ExecutorException:
Error getting generated key or setting result to parameter object.
Cause: org.apache.ibatis.executor.ExecutorException: Could not determine which parameter to assign generated keys to.
Note that when there are multiple parameters, 'keyProperty' must include the parameter name (e.g. 'id'). Specified key properties are [id] and available parameters are [XXX, XXX, param1, param2]

分析原因

  • 数据库是否支持自动生成密钥字段(例如MySQL和SQL Server),那么就只需设置useGeneratedKeys="true" 并将 keyProperty设置为Java对象的属性名,keyColumn是数据库中的列名(当主键列不是表中的第一列的时候,它必须设置的) 。

  • 传参有多个个参数,mybatis并不知道keyProperty = "id"中的 id 赋值给谁

  • (我就是这里出错)

  • 我看其他的博客还有说是版本的问题,建议3.3.1以上的。

排查问题

数据库是MySQL,设置了 useGeneratedKeys="true" ,且 keyProperty = id是Java对象的属性名,id是主键列且在第一列中

就是这里出错,keyProperty="id",导致不知道id返回到哪一个参数中

原来:

    insert into goods_sku (goods_id,images,indexes,spec,price,size,bkge_scale,team_scale,direct_scale,enable,create_time,update_time) values                        (#{param2},#{item.images},#{item.indexes},#{item.spec},#{item.price},#{item.size},#{item.bkgeScale},#{item.teamScale},#{item.directScale},#{item.enable},#{param3},#{param3})            

进行修改:

    insert into goods_sku    (goods_id,images,indexes,spec,price,size,bkge_scale,team_scale,direct_scale,enable,create_time,update_time) values                        (#{param2},#{item.images},#{item.indexes},#{item.spec},#{item.price},#{item.size},#{item.bkgeScale},#{item.teamScale},#{item.directScale},#{item.enable},#{param3},#{param3})            

依赖版本:

附上完整的Mapper以及Xml文件

GoodsSkuMapper.java

int insertBatch(@Param("goodsSkuDTOs") List goodsSkuDTOs, @Param("goodsId") Long goodsId,@Param("date") Date date);

GoodsSkuMapper.xml

    insert into goods_sku (goods_id,images,indexes,spec,price,size,bkge_scale,team_scale,direct_scale,enable,create_time,update_time) values                        (#{param2},#{item.images},#{item.indexes},#{item.spec},#{item.price},#{item.size},#{item.bkgeScale},#{item.teamScale},#{item.directScale},#{item.enable},#{param3},#{param3})            

到此,关于"Mybatis如何批量插入并返回主键id"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

时候 信息 库存 数据 学习 就是 数据库 问题 参数 对象 属性 更多 版本 帮助 实用 接下来 博客 原因 只需 商品 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网和科技技术 美国互联网科技巨头监管 互联网公司 科技公司 猪兼强互联网科技 互联网科技英文 南京欣网互联网科技 有木互联网科技 互联网科技股有哪些 上海电发互联网科技有限公司 南山科技园互联网公司有哪些 福建科技产业互联网发展 华夏恒生科技与互联网科技 沐思想互联网科技有限公司 山东大美朱楼互联网科技有限公司 云鲸互联网络科技有限公司 互联网科技企业商标注意事项 互联网金融金融科技 广东猫王互联网科技有限公司电话 互联网科技快速发展优美句子 广州大一互联网络科技有限公司 互联网科技公司经营范围 长亮科技 互联网金融 重庆科技学院互联网 互联网金融监管科技 互联网金融科技公司干啥的 徐州市互联网科技有限公司 北京市互联网新科技 兰石爱特工业互联网科技分公司 互联网领先科技成果宣传视频
0