Mybatis 批量插入引发的血案

欢迎访问配色好看的个人站

故事

今天下午公司技术分享,一个伙伴提到他踩过坑:mybatis批量插入时动态sql允许的最大参数数量是2100个。即下面代码中“#”的数量。

<insert id="batchInsert" parameterType="list">
  insert into Adv_permeability values
  <foreach collection="permeabilityList" separator="," item="permeability">
    (#{permeability.areaId}, #{permeability.areaName}, #{permeability.flag})
  </foreach>
</insert>

当时就有一个小伙伴不开心了,他明确表示自己曾经成功插入超过2100个参数,并当场拉出了代码证明之。由此猜测mybatis批量插入的上限是按对象数量限制的,不是参数,双方争执不下,一片欢乐。

探究

mybatis 真的对动态 SQL参数 或者 对象 数量设定了限制么?如果有那么原因何在?如果没有,那么为什么双方都那么确定呢?难道是 数据库 不同导致的?

本着最小投入的原则,笔者开始了测试。手头现有 SQLServerMysql 就测这两个吧。脚本使用上述的简单脚本。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值