Mybatis批量操作的坑

批量操作

我们在使用mybatis时会经常用到标签,再进行批量insert/update时,出于性能考虑我们往往以多调sql形式拼接sql语句:如下

<update ...>
    <foreach ... separator=";">
    update ...    --这里是更新的内容
    </foreach>
</update>

这种情况下,原本在测试环境下跑通的代码却无法在正式环境进行运行,但测试和正式的环境完全相同,由于项目时间紧张只能曲线救国,将拼接sql的语句放到代码中完成,或者insert语句用in(…)进行批量插入。

在完成项目功能之后,开始梳理遇到该问题的原因,了解到如果想在sql拼接时进行多条数据执行,必须在连接数据库时加&allowMultiQueries=true

jdbc:mysql://localhost:3306/platform?characterEncoding=UTF-8&allowMultiQueries=true

而数据库配置中确实已经有该配置,而测试与正式环境执行不同,我们将问题定位在了正式环境中的配置文件。
经过核对,正式环境的配置也相同,于是需要考虑正式环境不同之处。

由于该项目是搭建在Kubernetes上的springboot项目,检查了启动项目时的脚本发现,每次启动时会进行mysql连接的重新配置,这里没有加入&allowMultiQueries=true。在正式环境启动脚本中增加该内容,项目启动后批量插入功能正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值