乐观锁:总是认为不会出现问题,无论干什么都不会上锁,如果出现了问题就再次更新值测试
1.取出记录时,获取当前version
2.更新时,带上这个version
3.执行更新时, set version = newVersion where version = oldVersion
4.如果version不对,就更新失败
实现步骤:
1.给数据库增加version字段
2.实体类加上对应的注解
@Version
private int version;
3.注册组件:
package com.dai.config;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@MapperScan("com.dai.mapper")
@Configuration
public class MybatisPlusConfig {
@Bean
public OptimisticLockerInterceptor OptimisticLockerInterceptor() {
OptimisticLockerInterceptor interceptor = new OptimisticLockerInterceptor();
return interceptor;
}
}
4.测试即可
@Test
public void lock(){
//线程1
User user111 = userMapper.selectById(1L);
user111.setName("ddddd111");
user111.setAge(100);
//线程2
User user222 = userMapper.selectById(1L);
user222.setName("ddddd222");
user222.setAge(10);
userMapper.updateById(user222);
userMapper.updateById(user111);
}
发现user222成功,user111更新失败了,如果没有乐观锁user111就会覆盖user222的值
悲观锁:总是认为会出现问题,无论干什么都会加锁再去操作