今天在使用mybatis-plus乐观锁插件时,发现乐观锁并没有生效。
查了问题发现首先需要查询出结果(也就是需要version),然后再进行更新,这样乐观锁就能起作用了。
文档:https://mybatis.plus/guide/interceptor-optimistic-locker.html#optimisticlockerinnerinterceptor
OptimisticLockerInnerInterceptor
当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:
取出记录时,获取当前version
更新时,带上这个version
执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败
使用了mybatis plus的乐观锁后,自己写sql更新内容时,不要加where version = xxx条件,也不需要手动给version + 1,mybatis会自己管理。自己再去维护会适得其反,只会导致更新永远是失败的。