- 目的:当要更新一条记录的时候,希望这条记录没有被别人更新
- 乐观锁实现方式:
取出记录时,获取当前version
更新时,带上这个version
执行更新时,set version = newVersion where version = oldVersion
如果version不对,就更新失败 -
乐观锁:
–A线程
update user set name = “kuangshen”, version = version+1 where id = 2 and version = 1–B 线程抢先完成,这个时候version = 2,会导致A修改失败!
update user set name = “kuangshen”, version = version+1 where id = 2 and version = 1 - 测试一下MP的乐观锁插件:
1.给数据库添加version字段
2.给实体类添加version字段
@Version//乐观锁的Version注解
private Integer version;
3.注册组件
Interceptor是一个拦截器
4.测试乐观锁(成功):
结果为:
5.测试乐观锁(失败)
结果为:
发现插入的线程执行成功,最后面的没有执行成功,如果没有使用乐观锁的话,执行结果就是为:qkcao1111,就会覆盖之前执行的结果
最新评论
徒弟可以A师傅,学生可以A老师,为什么外包不能A正式,我觉得很正常。异性相吸这是宇宙真理
PHP天下第一(狗头叼花)
第一个不需要关注公主号直接给激活码的帖子!
客户端超时断开后,服务端如果没有设置超时机制,那也会继续等待处理,万一这期间有消息到了,那不是就接受到消息处理了,但是也没有办法返回到客户端,导致消息丢失。
企业级GO项目开发实战 Kubernetes权威指南 第六版
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk