添加maven
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
创建基类
@Data
public class BaseTable {
@TableId(type = IdType.ID_WORKER)
private Long id;
@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
创建实体类继承基类
@Data
@TableName("tb_user")
public class User extends BaseTable{
private String name;
private Integer age;
}
创建MyMetaObjectHander给基类里面的数据赋初始值
@Component
public class MyMetaObjectHander implements MetaObjectHandler {
//使用mp实现添加操作,这个方法执行
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("version", 1, metaObject);
}
//使用mp实现修改操作,这个方法执行
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
测试乐观锁
//测试乐观锁
@Test
public void testOptimisticLockerInnerInterceptor() {
User user = userService.getById(1350329595704897538L);
if(user!=null){
user.setAge(34);
userService.updateById(user);
}
}
需要先查询数据之后更改数据乐观锁才能生效。
结果: