Mybatis Plus 坑爹的乐观锁设置
先看下乐观锁的操作流程(这里只是针对springboot)
1.添加属性配置
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
2.在实体类的字段上加上@Version注解
@Data
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Version
@TableField(fill = FieldFill.INSERT) //添加这个是为了在创建的时候赋值为1 如果是 null 就不会执行了
private Integer version;
}
3.坑爹的在这个位置 当然官网也是有提醒的 但是提醒的有点略显坑
- **支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime**
- 整数类型下 `newVersion = oldVersion + 1`
- `newVersion` 会回写到 `entity` 中
- 仅支持 `updateById(id)` 与 `update(entity, wrapper)` 方法
- **在 `update(entity, wrapper)` 方法下, `wrapper` 不能复用!!!**
示例代码
// 这个要求是必须得执行getById 之后再执行updatebyid 才生效 如果只是执行其中一个 就不会生效 坑爹中的战斗机啊
User user = userService.getById(10L);
user.setEmail("ceshi@zhaodigroup.cn");
user.setAge(150);
user.setName("zhaosi");
userService.updateById(user);