乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,
再次更新值测试
悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作
乐观锁实现方式
给表加一个version字段,
在进行更新操作的时候,先查询version的数值,如果与version不符合,则执行失败
** set version = newVersion where version = oldVersion**
- 设计数据库增加version字段,默认版本为1

- 实体类加对应字段

-
配置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);}

悲观锁
无论对数据库执行什么操作都上锁,当一个事务访问数据库的时候,其余事务都在等待,