在mybatis中实现乐观锁的步骤如下:

1.在数据库中对表user添加version字段。

图片说明
2.在实体类User中添加属性version,并添加@Version注解

@Version
private Integer version;

3.新建config包,包下建立MpConfig类,用于统一管理配置信息。在Mpconfig中添加mp拦截器插件的代码。并把启动类中的配置信息移植到该类进行统一管理。

@Configuration
@MapperScan("com.wangzhou.mpdemo1010.mapper")
public class MpConfig {

    // 乐观锁插件
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

4.(非必须)在实体类user中的version添加注解。

@TableField(fill = FieldFill.INSERT)

并在MyMetaObjectHandler的insertFill()中添加如下代码,设置version初始值为1.

this.setFieldValByName("version", 1, metaObject);

编写测试代码测试,注意这里需要先查询,再修改,因为只有通过查询拿到version版本号才能够再update时进行版本对比。

 @Test
 public void testOptimisticLocker() {
    //先查询
    User user = this.userMapper.selectById(1428131805257474051l);
    //后修改
    user.setAge(99);
    this.userMapper.updateById(user);
 }