update 大家会允许这样写吗?

Niner · 昨天 22:47 · 1339 次点击
User u = userMapper.selectOne(id);
u.setName(myname);
u.setAge(myAge);
userMapper.updateById(u);

我看工作里面很多代码都是这样更新的,虽然方便但是有并发问题,大佬们 cr 遇到会打回去吗?

举报· 1339 次点击
登录 注册 站外分享
12 条回复  
kanepan19 小成 昨天 22:54
看场景,订单这样去更新要被批。 用户这样更无所谓。
ncbdwss 初学 昨天 23:03
绝对不允许。
KongLiu 小成 昨天 23:03
并发问题,建议加上乐观锁
SingeeKing 小成 昨天 23:05
不懂 java ,但为啥这样会有并发问题?按我的理解 u 是 select 返回的,updateById 的过程才会创建 transaction 并 commit ,理论上 u 不共享不会出并发问题?
MooRider 小成 昨天 23:43
@SingeeKing #4 第一个请求还没完成的时候第二个请求进来了, 由于一些原因导致第二个请求比第一个快, 最后的结果就变成了保存第一个请求的值
sduoduo233 小成 昨天 23:43
@SingeeKing 我也不懂 java ,但是我觉得如果在 select 和 update 之间 user 的某一项数据更新了,会被 update 覆盖
zhouhu 小成 1 小时前
@kanepan19 大佬
pelloz 小成 1 小时前
看场景,没要求的位置这么写没问题,写完赶紧下班。有要求的位置简单加一个事务,赶紧下班。对性能有影响了?那就改为乐观锁,改完下班。
crysislinux 小成 1 小时前
所以你们的每个表都有类似 version 字段的东西么,实践中很少这样吧,我看到的绝大部分更新都是这样更的。
12下一页
返回顶部