当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:
1、取出记录时,获取当前 version
2、更新时,带上这个 version
3、执行更新时, set version = newVersion where version = oldVersion
4、如果 version 不对,就更新失败
简单的说就是:
1、数据库中添加version字段
2、取出记录时,获取当前version
SELECT id,`name`,price,`version` FROM product WHERE id=1
3、更新时,version + 1,如果where语句中的version版本不对,则更新失败
UPDATE product SET price=price+50, `version`=`version` + 1 WHERE id=1 AND `version`=1
Mybatis-Plus实现乐观锁
步骤:
1、在表中添加version字段。
2、修改实体类
3、添加乐观锁插件配置
spring xml 方式:
springboot方式:
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//乐观锁插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
这样就配置好了乐观锁插件。
优化流程