mybatis-plus 乐观锁

参见:https://mp.baomidou.com/guide/optimistic-locker-plugin.html#%E4%B8%BB%E8%A6%81%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF

原理:

场景1:A获取到的version=0,而 此时B修改并提交了即version=1,然后A在update提交,则不成功。

场景2:A获取到的version=0,在B修改并提交之前,A执行update提交成功,则当B在执行update提交时不成功。

即:不管别人先提交了,还是自己先提交了,不能让后提交的人修改成功

不让其修改成功的方法是:UPDATE t_sch_locale SET modified_time=?, creator=?, locale_detail=?, remark=?, state=?, locale_name=?, version=? WHERE id=? AND version=? AND is_delete=0 

这个就是传过来的值,如果不一样了,就返回结果为0

举个例子,以下是接收update提交的方法体:

LocalePO po = new LocalePO();//localeMapper.selectById(dto.getId());
BeanCopyUtils.copyBean(dto.dto2po(),po);
int rs = localeMapper.updateById(po);

不要使用LocalePO po = localeMapper.selectById(dto.getId());,因为这样,乐观锁就没用了,就是谁都能修改成功了。

因此,当update时,客户端必须传进来之前获取到的version值。

 

posted @ 2020-02-06 20:35  遥远2  阅读(347)  评论(0编辑  收藏  举报