乐观锁插件
什么是乐观锁?
乐观锁,认为所有的操作都不会出问题,所有的操作都不加锁,如果出现错误,返回用户错误信息,让用户自己决定如何操作
主要适用场景
意图:
当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果version不对,就更新失败
插件配置
spring boot 配置类
@MapperScan("com.myboy.mapper")
@Configuration
public class MybatisPlusConfig {
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
配置可以写在 springboot 启动类中,但推荐单独写一个配置类专门写各种配置信息
注解实体字段 @Version
@Version
private Integer version;
示例
user 表中增加一列 version,默认值为1
alter table user add version int default 1;
通过 java 代码修改表,查看版本号是否变化
@Test
void test2(){
User user = userMapper.selectById(1L);
user.setAge(34);
userMapper.updateById(user);
}
特别说明:
- 乐观锁的实现必须先查询,后修改,直接修改无效