乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,
再次更新值测试
悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作
乐观锁实现方式
给表加一个version字段,
在进行更新操作的时候,先查询version的数值,如果与version不符合,则执行失败
** set version = newVersion where version = oldVersion**
配置config类
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
模拟乐观锁
void testVersion(){
//线程1
User user = userMapper.selectById(1407235863996809217L);
user.setName(“啸牛马”);
user.setAge(18);
//线程2----> 线程2实现了插队的操作
User user1 = userMapper.selectById(1407235863996809217L);
user1.setName("小牛");
user1.setAge(20);
userMapper.updateById(user1);
//执行线程1的操作则会覆盖线程2的修改
userMapper.updateById(user);
}
无论对数据库执行什么操作都上锁,当一个事务访问数据库的时候,其余事务都在等待,