乐观锁 主要解决 丢失更新问题

12306抢票问题

多人抢票 只有一人可以得到

第一步

数据库表中添加 version字段

第二步

在User实体类中添加属性并且加上@Version注解

@Version@TableField(fill = FieldFill.INSERT)private Integer version;

自动填充 插入时自带一个version

自动填充参见  Mybatis-Plus字段自动填充_qq_53951760的博客-CSDN博客

this.setFieldValByName("version",1,metaObject);

第三步

自定义乐观锁配置

@Configuration
public class MybatisPlusConfig {/*** 新版*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;}
}

测试

// 4.乐观锁测试
@Test
public void testOptimisticLocker(){// 根据id来查询数据User user = userMapper.selectById(1497827489618153477L);//修改user.setAge(222);//更新int result = userMapper.updateById(user);System.out.println("result:"+result);
}//结果
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@17092fff] will not be managed by Spring
==>  Preparing: UPDATE user SET name=?, age=?, email=?, version=?, create_time=?, update_time=? WHERE id=? AND version=?
==> Parameters: lucy2222(String), 222(Integer), 1221@qq.com(String), 2(Integer), 2022-02-27 16:02:49.0(Timestamp), 2022-02-27 16:09:36.023(Timestamp), 1497827489618153477(Long), 1(Integer)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78a515e4]
result:1

结果

数据库表中的version+1

Mybatis-Plus实现乐观锁配置相关推荐

  1. 配置MyBatis Plus 的乐观锁功能

    配置MyBatis Plus 的乐观锁功能 一. 回顾CAS乐观锁 CAS: 二. 配置MyBatis Plus 的乐观锁 (1)数据库:添加version版本号 (2)实体类:添加version版本 ...

  2. MybatisPlus乐观锁配置

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

  3. mybatis-plus乐观锁配置

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

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

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

  5. MybatisPlus中乐观锁的配置

    1.什么是乐观锁? 乐观锁:十分乐观,它总是认为不会出现问题,无论干什么,都不去上锁!如果出现了问题,就重新更新值. 2.什么是悲观锁? 悲观锁:十分悲观,它总是认为会出现问题,无论干什么,都加上锁, ...

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

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

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

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

  8. mybatisplus乐观锁最新

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

  9. mybatis 乐观锁和逻辑删除

    本篇介绍easymybatis如配置乐观锁和逻辑删除. 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现.即:数据库增加一个int或long类型字段ver ...

最新文章

  1. 【python】Series和DataFrame的简单介绍
  2. C# 系统应用之清除Cookies、IE临时文件、历史记录 转载
  3. 【分享】怎样学习一门新技术?
  4. boost::spirit模块实现使用不同的输出语法格式化单个容器类型的测试程序
  5. 设计模式之Facade(外观)模式
  6. java 对比度,java批改图片亮度对比度
  7. 怎样取消Windows 2003 server 意外关机提示
  8. SQL Server索引怎么用
  9. java三件套_Java开发人员应该知道的三件事
  10. 深度学习笔记--多层感知器以及BP算法
  11. Android 图片异步加载的体会,SoftReference已经不再适用
  12. ae中心点重置工具_如何使用AE制作文字破碎动画?制作ae破碎文字特效教程分享...
  13. H264的编码负担约是解码的5-10倍
  14. MySQL学习笔记(2)
  15. web服务器性能排名,主流Web服务器性能测试
  16. iOS Safari阅读模式分析过程
  17. 9大论坛、多项AI创新成果,Imagination邀您共聚 AIIA2020人工智能开发者大会
  18. 数据集:UCI【UC Irvine Machine Learning Repository】
  19. [JZOJ5539] psy
  20. electron支持开机自启动(注册表写入)

热门文章

  1. frame切换、多窗口切换
  2. 记录--WebSocket 原理
  3. 分析企业上云的办法及意义
  4. PHP执行shell_exec方法失败
  5. SQL AUTO INCREMENT
  6. 算法——中国剩余定理
  7. 高通安卓关闭WiFi服务不卸载驱动
  8. Linux强制修改超级用户root密码
  9. jQuery的promise异步模式
  10. CSS3 实现可爱的动物动态的哈士奇动画