乐观锁
-
业务并发现象带来的问题:秒杀
乐观锁案例
1、数据库表中添加锁标记字段(version)
2、实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
public class User { private Long id; @Version private Integer version; }
3、配置乐观锁拦截器实现锁机制对应的动态SQL语句拼装
@Configuration public class MyConfig { @Bean public MybatisPlusInterceptor myInterceptor() { MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor(); mpinterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return mpInterceptor; } }
4、使用乐观锁机制在修改前必须先获取到对应数据的version方可正常进行
@Test void testUpdate() { //先查询数据,获取到version数据 User user = userDao.selectById(1L); //执行数据修改操作 user.setName("Tom and Jerry"); userDao.updateById(user); }