在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); }