声明,目前只是仅仅针对3.0以下版本,2.0以上版本。

意图:

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

乐观锁实现方式:

取出记录时,获取当前version
更新时,带上这个version
执行更新时, set version = yourVersion+1 where version = yourVersion
如果version不对,就更新失败

第一步,配置

SSM框架(Spring+SpringMVC+MyBatis-Plus):

spring-mybatis.xml配置:

SpringBoot配置:

@Bean

public OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();
}

第二步,加上注解

public class User {

@Version
private Integer version;

}

特别说明: 仅支持int,Integer,long,Long,Date,Timestamp

测试代码:

int id = 100;
int version = 2;

User u = new User();
u.setId(id);
u.setVersion(version);

if(userService.updateById(u)){

System.out.println("Update successfully");

}else{

System.out.println("Update failed due to modified by others");

}

示例SQL原理:

update tbl_user set name='update',version=3 where id=100 and version=2;

MP实战系列(十七)之乐观锁插件相关推荐

  1. MyBatisPlus插件扩展_OptimisticLockerInterceptor乐观锁插件的使用

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 简介 意图: 当要更新一条记录的时候,希望这条记录没有被别 ...

  2. MyBatis-Plus 高级功能 —— 乐观锁插件

    一.引言 先来大概普及一下数据库锁的概念 悲观锁:时刻保持着一个悲观的态度,对谁都不信任,总想着别人会修改我的数据,所以为了防止别人修改,每次都会上锁,防止别人修改自己的数据.导致的后果就是每次想要拿 ...

  3. MP实战系列(二)之集成swagger

    其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...

  4. mybatis-plus使用乐观锁插件

    参考博文 https://baijiahao.baidu.com/s?id=1659469738216922362&wfr=spider&for=pc 1 没有锁的风险 开发不设锁,就 ...

  5. python乐观锁代码实现_Elasticsearch系列—并发控制及乐观锁实现原理

    概要 本篇主要介绍一下Elasticsearch的并发控制和乐观锁的实现原理,列举常见的电商场景,关系型数据库的并发控制.ES的并发控制实践. 并发场景 不论是关系型数据库的应用,还是使用Elasti ...

  6. MP实战系列(十一)之封装方法详解(续一)

    之前写的封装方法详解,比较简要. 今天我主要讲增加和删除及其修改.查的话得单独再详讲. 增删改查,无论是Java或者C#等等,凡是对数据库操作的都离不开这四个. 一.增加方法讲解 MyBatis Pl ...

  7. openstack运维实战系列(十七)之glance与ceph结合

    1. 需求说明 glance作为openstack中p_w_picpath服务,支持多种适配器,支持将p_w_picpath存放到本地文件系统,http服务器,ceph分布式文件系统,glusterf ...

  8. 【Mybatis-Plus】(四)分页、乐观锁插件 通用枚举 多数据源

    写在前面

  9. Prometheus监控实战系列十七:探针监控

    目前对于应用程序的监控主要有两种方式,一种被称为白盒监控,它通过获取目标的内部信息指标,来监控目标的状态情况,我们前面介绍的主机监控.容器监控都属于此类监控.另一种则是"黑盒监控" ...

最新文章

  1. 9 张图带你深入理解 Docker 架构!
  2. np.reshape 中的 -1 参数
  3. C++中文转码问题(GB2312 - UTF8)
  4. 型数据保留几位小数_Python数据分析—数据框的简单操作
  5. Attention Model
  6. 转:SVN的Local方式:个人源码管理的好办法
  7. base包中自定义activity
  8. 搭建离线版keras中文文档
  9. 明解c语言入门篇有用吗,各位初学者在用明解C语言(入门篇)的时候花费了多长时间?...
  10. html闹钟设置,设置闹钟标签.html
  11. 17229 Lry,你除了2还是2[C]
  12. 新浪微博开放平台中的Redis实践
  13. EGo1下板_简单秒表
  14. 2019零售业9大新知洞察发布,零售服务在线采购节启动
  15. 第四天 轨道交通仿真入门
  16. TQ2440开发板移植UBOOT-2010.06总结(3)
  17. uniapp-App支付宝授权小记
  18. 元子弹老师-吉他指弹右手技巧
  19. 如何用计算机整理数据,总结:如何在excel中制作数据统计表(最简单的excel分类汇总教程)...
  20. 双11商超大促,竞争白热化,智慧供应链成品牌最大助力!

热门文章

  1. linux多进程通过中断实现,Linux驱动中断上下文中会发生什么结果实验测试
  2. 2014_anshan_onsite
  3. 134. 加油站 golang
  4. [C++]vector创建二维数组
  5. android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态
  6. 栈空间和堆空间的区别
  7. 树莓派远程监控的实现
  8. 保驾护航金三银四,内容太过真实
  9. 系统盘点Android开发者必须掌握的知识点,含小米、腾讯、阿里
  10. linux文件系统只有几k,关于Linux文件系统的的简单理解和认识