Mybatis Plus 乐观锁

一、简介

当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:

  • 取出记录时,获取当前version
  • 更新时,带上这个version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果version不对,就更新失败

二、代码实现

1、注入拦截器

@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
}

2、字段上加上@Version注解

@Version
private Integer version;

3、测试

@Test
public void update() {
    User user = new User();
    user.setId(1371308620579450882L);
    user.setAge(69);
    user.setVersion(1);
    int rows = userMapper.updateById(user);
    System.out.println("rows===" + rows);
}

日志输出如下,可以看出更新时带入版本号条件

start update fill ....
DEBUG==>  Preparing: UPDATE user SET age=?, update_time=?, version=? WHERE id=? AND version=? AND deleted='0' 
DEBUG==> Parameters: 69(Integer), 2021-03-15 15:00:14.568(Timestamp), 2(Integer), 1371308620579450882(Long), 1(Integer)
DEBUG<==    Updates: 1
rows===1

4、注意事项

原文地址:https://www.cnblogs.com/jwen1994/p/14537529.html