乐观锁与悲观锁
区别
悲观锁:在同一时间只能你一个人使用。(比如你玩微信,世界上只有你一个人玩)
乐观锁:可以同时修改数据,但是只有一个人能修改成功(比如抢票,一个位置只能有一个乘客)
乐观锁的实现
原理:在表中添加一个字段version --> 数据修改成功version自增1
1、表中添加字段version
ALTER TABLE `user` ADD version INT;
2、对应实体类添加版本号属性
@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;
3、元对象处理器接口添加version的insert默认值
@Override
public void insertFill(MetaObject metaObject) {
......
this.setFieldValByName("version", 1, metaObject);
}
4、配置乐观锁插件
@Configuration
@MapperScan("com.springboot.mybatisplus1.mapper")
public class MyConfig {
//乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
}
5、测试乐观锁
1)测试前
2)测试后
//test测试类
@Autowired
private UserMapper userMapper;
@Test
public void testOptimisticLocker(){
//根据id查询数据
User user = userMapper.selectById(1763603441894060034L);
//进行修改
user.setAge(1);
userMapper.updateById(user);
}