mybatis-plus里面的乐观锁

mybatis-plus里面的乐观锁

乐观锁:解决丢失更新问题

丢失更新:多个人同时修改同一条数据,最后提交的把之前提交的数据覆盖

  • 类比于spring的事务,在不考虑事务隔离性的情况下,读的问题会产生

    • 脏读
    • 不可重复性
    • 幻读
  • 写的问题会产生:丢失更新问题

解决方案之乐观锁悲观锁

  • 悲观锁:串行
  • 乐观锁:加version

image-20211228110317644

最开始数据库version,Lucy事务,Mary事务都是1,然后左边先提交事务commit完了后会将数据库中的version+1。这时当右边的人想要commit的时候,会发现自己的version和数据库中的version不一样,这里就会阻止提交。

image-20211228110805006

一万个人抢一张票,谁手快先付款后,数据库version变为2,然后所有9999人都提交不了了。

如何添加乐观锁

  1. 数据库表中加一个字段version

image-20211228111039083

  1. 实体类中添加@version注解

image-20211228111123095

  1. 跟分页一样添加一个乐观锁插件

image-20211228111151224

实战效果就是(你改了类中的某个字段,然后version会自动+1,这样就完了。)

image-20211228111934637

最开始user.age=0 version =0

经过上述代码修改

后来user.age=200 version=1

.age=0 version =0

经过上述代码修改

后来user.age=200 version=1

这样就算一个成功的乐观锁了。。。。。。(感觉很尴尬)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值