mybatis-plus里面的乐观锁
乐观锁:解决丢失更新问题
丢失更新:多个人同时修改同一条数据,最后提交的把之前提交的数据覆盖
-
类比于spring的事务,在不考虑事务隔离性的情况下,读的问题会产生
- 脏读
- 不可重复性
- 幻读
-
写的问题会产生:丢失更新问题
解决方案之乐观锁悲观锁
- 悲观锁:串行
- 乐观锁:加version
最开始数据库version,Lucy事务,Mary事务都是1,然后左边先提交事务commit完了后会将数据库中的version+1。这时当右边的人想要commit的时候,会发现自己的version和数据库中的version不一样,这里就会阻止提交。
一万个人抢一张票,谁手快先付款后,数据库version变为2,然后所有9999人都提交不了了。
如何添加乐观锁
- 数据库表中加一个字段version
- 实体类中添加@version注解
- 跟分页一样添加一个乐观锁插件
实战效果就是(你改了类中的某个字段,然后version会自动+1,这样就完了。)
最开始user.age=0 version =0
经过上述代码修改
后来user.age=200 version=1
.age=0 version =0
经过上述代码修改
后来user.age=200 version=1
这样就算一个成功的乐观锁了。。。。。。(感觉很尴尬)