主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新
乐观锁实现方式:
取出记录时,获取当前version
更新时,带上这个version
执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败。
实现步骤:
1、数据库表中增加version字段;
2、对应的实体类中添加version属性,并在属性上添加2个注解,(1)@version 用于标志该属性为乐观锁版本管理属性;
(2)@TableField(file=FieldFill=INSERT)用于新增时自动填充值
3、配置乐观锁插件:
@Configuration
@MapperScan("com.mpt.demomptest.mapper")
public class MpConfig {
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
如此,当首次插入一条 数据时,version为1,每发生一次变更,值就会自动在原基础上加1.