mybatis-plus 乐观锁
原理:
场景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值。