项目中经常看到这样的代码:
int rows = mypaymentDao.batchInsert(t);//如果rows不大于0,即未插入成功if (rows <= 0) { throw new Sv2Exception("数据处理失败");}
通过Mybatis,在对数据库增删改的操作中,我通常判断操作是否成功的处理,都是直接判断是否为0,并没有考虑到小于0的情况,也一直认为没有小于0的情况,但是抱着质疑的态度百度了一下,还真有小于0的情况。
是由于defaultExecutorType引起的,defaultExecutorType有三个执行器SIMPLE、REUSE和BATCH。其中BATCH可以批量更新操作缓存SQL以提高性能,但是有个缺陷就是无法获取update、delete返回的行数。
如果设置为BATCH,更新返回值就会丢失。Mybatis官网是这么描述的:If the BATCH executor is in use, the update counts are being lost.
其中defaultExecutorType的默认执行器是SIMPLE,所以想处理返回影响行数为负数的情况,要么把defaultExecutorType执行器的值改为SIMPLE或REUSE,或者直接删除该配置就可以了,要么在程序代码中添加数据库操作影响行数小于等于0的判断处理。
另外,在百度解决上面问题的过程中还了解到,update操作数据更新成功,返回的影响行数是0的情况,具体原因我就不赘述了。最后想说,实践出真知,百度真强大,网友啥都懂,赞一个!
点击卡片关注公众号,了解更多技术内容!
文章转载自纪鑫鑫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1221次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
690次阅读
2025-04-30 15:24:06
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
588次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
575次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
495次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
471次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
466次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
355次阅读
2025-04-18 10:01:22
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
269次阅读
2025-04-23 12:04:21
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
247次阅读
2025-04-28 11:01:25