主要适用场景:
当有多个线程要更新同一条数据时,防止出现数据更新丢失问题,也即保证线程安全的更新同一条数据。
乐观锁实现方式:
①取出记录时,获取当前version
②更新时,带上这个version
③执行更新时, set version = newVersion where version = oldVersion
④如果version不对,就更新失败
接下来介绍如何在项目中,如何具体使用乐观锁:
(1)修改实体类:在对应的实体类上添加 @Version 注解
@Version
private Integer version;
(2)创建配置文件
创建包config,创建文件MybatisPlusConfig.java,此时可以删除主类中的 @MapperScan 扫描注解
@Configuration
@MapperScan("com.demomptest.mapper")
public class MpConfig {
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
(3)注册乐观锁插件
在 MybatisPlusConfig 中注册 Bean
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}