Mybatis 数据库批量update的关注点-记一次bug造成的严重后果

我们公司有自己的API处理mybatis的update,我做开发基本都使用这个API,但是看了源码发现,如果是批量处理update的话,也只是代码里做的循环逐条update,并不是在一个sql语句中批量处理。这样的处理,如果批量更新的数据比较大时,性能将会大大降低,所以组长就要求我对系统里有批量更新处理的部分进行优化。

当接到这个需求的时候,我脑子里就有了一个清晰的思路,只用一句sql进行批量处理,很直接很简单就想到了sql关键字in,只需要代码里获取需要更新的数据的主键值,以列表形式入参到mybatis,很原始很低级也很有效的处理方式。

在这里面有一个关键的地方就是必须要判断入参的列表是否为空,在mysql里,in后面是空的话,将会处理全量表,正是因为自己忽略了这个判断,更新全量表的,并且引起程序假死,系统的主业务流程崩溃,给客户造成了经济损失,还被客户一纸声明投诉过来,真的是很愧疚。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值