前言
上一篇对乐观锁进行了介绍,MyBatis-Plus用版本号机制实现乐观锁
这个是自己学习时候记得笔记要是想详细了解可以去MP官网,上边有更详细的配置流程以及视频教学:MyBatis-Plus
版本号(version)机制流程
- 取出记录时,获取version字段
- 更新时,判断当前version与数据库中数据version是否一致
- 版本一致则进行更新,version+1;不一致则失败,下一步自己决定
功能实现
- 配置乐观锁插件
MyBatisPlusConfig类中进行插件配置(之前配置分页插件的那个)
@Configuration
public class MyBatisPlusConfig {
// 分页插件
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
// 不需要进行逻辑删除配置
// 乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
- 实体类与数据库中加入version字段,记录版本
实体类中的version需要加入@Version注解
@Version
private int version;
- 进行更新
public void updateType(){
// 先进行查询
Type type = typeMapper.selectById(5);
type.setName("你好");
// 再进行修改
typeMapper.updateById(type);
}
- 执行SQL,将version设置为查询条件进行数据比对
注意:只支持updateById(),以及update( Entity , UpdateWrapper )的使用,新的version会回写到进行操作的对象中
注意:UpdateWrapper不能复用