1、定义:定义一个版本号字段version,每次执行修改数据时先取出版本号暂存(旧值),然后执行业务逻辑,在更新时判断此时的版本号是否和一样,一样则更新成功。
2、定义实体类

@Data
public class UserScore {@TableId(value = "id", type = IdType.AUTO)private Long id;private String course;private String score;private Long userId;@Version//乐观锁注解private Integer version;}

3、配置类进行注册

@Configuration
@EnableTransactionManagement//自动事务管理
public class MybatisPlusConfig {//注册乐观锁插件@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;}
}

4、测试代码

//测试乐观锁成功@Testvoid testVersion(){//1、查询信息UserScore userScore = userScoreDao.selectById(10L);//2、修改信息userScore.setCourse("政治");userScore.setScore("99");//3、执行更新操作userScoreDao.updateById(userScore);}//测试乐观锁失败@Testvoid testVersionFail(){//线程1UserScore userScore = userScoreDao.selectById(12L);userScore.setCourse("考研数据");userScore.setScore("145");//模拟另外一个线程执行了插队操作UserScore userScore2 = userScoreDao.selectById(12L);userScore2.setCourse("xxxxx测试数据");userScore2.setScore("185");userScoreDao.updateById(userScore2);userScoreDao.updateById(userScore);}

mybatis-plus乐观锁配置相关推荐

  1. Mybatis-Plus实现乐观锁配置

    乐观锁 主要解决 丢失更新问题 12306抢票问题 多人抢票 只有一人可以得到 第一步 数据库表中添加 version字段 第二步 在User实体类中添加属性并且加上@Version注解 @Versi ...

  2. mybatis mysql 乐观锁_基于tx.mapper实现的mysql乐观锁

    1.表CREATE TABLE `demo` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '物理主键', `demo_id` varchar(3 ...

  3. MybatisPlus乐观锁配置

    丢失更新问题 两个用户同时操作同一条数据,最后提交的数据会覆盖上一次提交的,这就是丢失更新问题 解决这个问题,有悲观锁(串行)与乐观锁等方法 乐观锁 乐观锁实现线程安全的数据更新,每次更新数据先比较版 ...

  4. springboot 使用mybatis-plus 配置乐观锁

    新增 Mybatis plus乐观锁插件 配置类 package com.engine.cmdbsync.config;import com.baomidou.mybatisplus.extensio ...

  5. springboot 使用mybatis-plus 配置乐观锁。

    -----------------------------官方文档已更新,详细配置请访问:mybatis plus乐观锁插件 进行查看--------------------------------- ...

  6. mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充

    MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...

  7. (13) 悲观锁和乐观锁解决hibernate并发(转)

    前言:  做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统.假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 Select ...

  8. mybatisplus乐观锁最新

    旧版本的乐观锁配置插件如下: @Configuration @MapperScan("com.zcy.mybatisplus.mapper") @EnableTransaction ...

  9. 乐观锁实现接口幂等性_深入理解幂等性

    什么是幂等性 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外).也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同. ...

最新文章

  1. 《因果学习周刊》第9期:因果学习中的工具变量
  2. 检测未定义的对象属性
  3. linux系统运维面试题
  4. HTML5学习笔记(一)(2015-12-2)【新浪云搬运】
  5. HDU5730 FFT+CDQ分治
  6. 13个圆可以画什么?数学与艺术完美邂逅!原来数学也可以这么美
  7. Leetcode--238. 除自身以外数组的乘积
  8. Matlab画图 线型控制
  9. BP(Back Propagation)神经网络——原理篇
  10. 小龙 Dev-C++ 5.16 发布了
  11. 【信管1.17】信息化发展
  12. Loadrunner11在Win10上使用踩过的坑
  13. 艾孜尔江在腾讯网上的影视作品
  14. 蓝牙硬件设备没有链接到计算机,电脑未发现蓝牙硬件设备怎么办
  15. 中国第21批援赞比亚军医组凯旋
  16. UI: 网易新闻实现
  17. GlobalMapper20如何更快速的浏览影像(mbt)【tif转mbt】
  18. RedisUtils和 RedisConfig代码封装如下
  19. 如何一键制作ps铅笔素描画人物效果
  20. python字典程序题_Python学习之字典实现成绩管理程序

热门文章

  1. Charles 解决抓包显示乱码问题 - 已解决
  2. 【无标题】人工智能的定义
  3. Cameralink转VGA接口转换模块
  4. HTML+JS+websocket 实现联机“游戏王”对战(十三)- 实机演示视频
  5. 实现用户的登录,并且登录后显示用户名
  6. 在 Debian 11 Bullseye 上安装 Proxmox VE 7国内镜像源
  7. 鸡兔同笼python程序怎么写_鸡(土从)
  8. JavaScript正负运算符
  9. [BJDCTF 2nd] 燕言燕语-y1ng
  10. bind9 dlz mysql_bind-9.4.2+mysql dlz安装