先在数据库中添加version字段
在config类中添加插件,同时也把mapperscan注解移到这里
@Configuration
@MapperScan("com.mpdemo1010.mapper")
public class MpConfig {
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
再在实体类中添加version属性
加上version注解
@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;
这样就完成了
@TableField(fill = FieldFill.INSERT)是自动填充
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
//使用mp实现添加操作,这个方法执行
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
this.setFieldValByName("version",1,metaObject);
}
@Override
//使用mp实现修改操作,这个方法执行
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
会调用insertFill中的方法
最后测试
//测试乐观锁
@Test
void testOptimisticLocker(){
//先查后改
User user = userMapper.selectById(1528706119298457602L);
user.setAge(20000);
userMapper.updateById(user);
}