java踩坑笔记——MyBatis中update返回结果

很多猿在撸码时都会对update、delete、insert等返回结果进行判断,若返回数量大于0则继续后续步骤,这样可以一定程度上确保数据一致性。但是不经意间也会引发别的问题。那么你在撸码过程中是否碰到过如下问题?

public int updateByPrimaryKey(User user) {
    insertLog(selectByPrimaryKey(user.getUserId()), UPDATE, "更新前:  ");
    int count = userMapper.updateByPrimaryKey(user);
    insertLog(user, UPDATE, "更新后:  ");
    return count;
}

以上代码根据count判断,如果count>0则继续,否则通知用户修改失败。

同样的数据在预生产环境流程可以继续向下,可是在生产环境却被阻断。debug发现预生产环境返回1,生产环境返回0,所以造成阻断。

经过系列测试发现mysql配置是一样的。查阅资料发现可以针对jdbcUrl进行属性配置来解决这个问题。(未对比数据库版本是否有影响)

useAffectedRows:是否用受影响的行数替代查找到的行数来返回数据。

在实际项目过程中其实可以通过另一种方式解决,不再对update返回结果进行判断,如果修改失败,那么一般情况下是会有异常发生,所以对于返回结果的判断并不是必要的。当然如果业务要求判断,那么就可以使用useAffectedRows来进行一致化处理。

System.out.println("我叫update");
int count = update();
if(count > 0){
	System.out.println("完蛋了");
}else{
	System.out.println("更加完蛋了"):
}

当然如果有别的解决方式欢迎各位探讨。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值