乐观锁:
就是计算机操作系统中的信号量机制,容量只有一个,先进来的就上锁,后进来的就进不来
springboot整合MyBatisPlus时,数据库中添加字段version
在实体类上添加注解@Version
,在配置类中添加乐观锁的拦截器,然后测试类那边一定要提供version,不提供的话,默认是零,而MP
乐观锁的本质是将传进来的version
参数进行version=version+1
操作,所以需要传进来的version
是有值的,可以直接设置serversion()
,也可以先查询一下,这样查询的结果中定然是有version
值的
实体类:
@Version
private int version;
配置类中加乐观锁拦截器:
//乐观锁
tor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
测试类中:两个对象对同一个id(代表同一种商品)进行修改操作:其只有一个快人一步的那个才可以成功进行修改
@Test
void updateById(){
tblbook byid=selectById();
tblbook byid1=selectById();
byid.setName("葫芦娃救爷爷");
byid1.setName("小蝌蚪找妈妈");
System.out.println(dao.updateById(byid));
System.out.println(dao.updateById(byid1));
}
查看下日志,到底是怎样的sql语句:这里就先查询,version就有了值