当前位置: 首页 > news >正文

【MyBatis-Plus】基于@Version注解的乐观锁实现

引入mybatis-plus依赖,注意这里的版本要求 since 3.4.0;(3.4.1,3.4.2已测)
3.2.0肯定是不支持的,无法引入MybatisPlusInterceptor

乐观锁

当要更新一条记录的时候,希望这条记录没有被别人更新

配置工作

  1. 实例化OptimisticLockerInnerInterceptor,并添加到MyBatis-Plus的拦截器链中;
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;
}
  1. 在Entity中定义version字段,并加上@Version注解。
@Version
private Integer version;

参照官网文档

实现方式

  1. 取出记录时,获取当前version
  2. 更新时,带上这个version
  3. 执行更新时, set version = newVersion where version = oldVersion
  4. 如果version不对,就更新失败

注意事项

说明:

  • 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
  • 整数类型下newVersion = oldVersion + 1
  • newVersion会回写到entity
  • 仅支持updateById(id)update(entity, wrapper)方法
  • entity的版本字段必须有值,否则不会生成乐观锁SQL
  • update(entity, wrapper)方法下,wrapper不能复用!!!

参考文档

mybatis-plus乐观锁插件
mybatis-plus基于@Version注解的乐观锁实现
Mybatis-Plus基于@Version注解的乐观锁实现及两个坑

http://www.lryc.cn/news/34607.html

相关文章:

  • ubuntu20.04搭建detectron2环境
  • Navicate远程连接Linux上docker安装的MySQL容器
  • 基于Jetson NX的模型部署
  • 【PaddlePaddle onnx】PaddlePaddle导出ONNX及模型可视化教程
  • 虹科案例 | 如何可持续的对变压器进行温度监控?
  • Go之入门(特性、变量、常量、数据类型)
  • 第九届省赛——8等腰三角形(找规律)
  • 【产品设计】ToB 增删改查显算传
  • MySQL(二)视图、锁、存储过程、触发器、锁以及常用工具
  • CorelDRAW Graphics Suite2023更新内容介绍
  • 2021牛客OI赛前集训营-提高组(第三场) T1变幻
  • 你还在使用if-else写代码吗,今天带你领略下策略模式的魅力!
  • Leetcode. 21 合并两个有序列表
  • 使用 Wall 教你搭建 照片墙 和 视频墙
  • 0103 MySQL06
  • 【UE4 RTS游戏】04-摄像机运动_鼠标移动到视口边缘时移动Pawn
  • 147597-66-8,p-SCN-Bn-NOTA,NOTA-P-苯-NCS新型双功能螯合剂
  • JDK解压安装及idea开发工具配置
  • 使用Ubuntu中的Docker部署Remix
  • 【MySQL】P9 多表查询(3) - 子查询
  • SpringMVC中的拦截器不生效的问题解决以及衍生出的WebMvcConfigurationSupport继承问题思考
  • 【量化交易笔记】3.实现数据库保存数据
  • [数据结构]:15-堆排序(顺序表指针实现形式)(C语言实现)
  • 蓝桥 卷“兔”来袭编程竞赛专场-02破解曾公亮密码 题解
  • CSS定位
  • python sympy库
  • 达梦数据库统计信息的导出导入
  • 信息系统基本知识(六)
  • <C++>智能指针
  • 1.分析vmlinux可执行文件是如何生成的? 2.整理内核编译流程:uImage/zImage/Image/vmlinx之间关系