Mybatis-Plus的starter版本:3.3.2 存储引擎:InnoDB 2.死锁现象 A同学在生产环境使用了Mybatis-Plus提供的 com.baomidou.mybatisplus.extension.service.IService#saveOrUpdate(T, com.baomidou.mybatisplus.core.conditions.Wrapper)方法(以下简称B方法),并发场景下,数据库报了如下错误图片。 二、为什么是间隙锁死锁?
1.数据库中增加一个version字段,默认值为0 versionint(10)NOTNULLDEFAULT‘0’ COMMENT ‘乐观锁版本号,每次修改+1’ 2.配置 @ConfigurationpublicclassMybatisPlusConfig {/*** 乐观锁插件*/@BeanpublicOptimisticLockerInterceptor optimisticLockerInterceptor() {returnnewOptimisticLockerInterceptor(); } } 3.实体类...
Mybatis-Plus的starter版本:3.3.2存储引擎:InnoDB 1.2 死锁现象 A同学在生产环境使用了Mybatis-Plus提供的com.baomidou.mybatisplus.extension.service.IService#saveOrUpdate(T, com.baomidou.mybatisplus.core.conditions.Wrapper)方法(以下简称B方法),并发场景下,数据库报了如下错误 死锁日志 2 为什么是间隙锁死锁?
mybatis-plus 3.2.0 集成步骤 第一步:导入jar包 pom中导入mybatis plus的jar包,因为后面会涉及到代码生成,所以我们还需要导入页面模板引擎,这里我们用的是freemarker。 com.baomidou mybatis-plus-boot-starter 3.2.0org.springframework.boot spring-boot-starter-freemarkermysql mysql-connector-java runtime 1. ...
MyBatisPlus简介 首先我们来简单介绍一下MyBatisPlus: MyBatisPlus(MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发,提高效率 MyBatisPlus开发具有三种开发方式: 基于MyBatis使用MyBatisPlus 基于Spring使用MyBatisPlus 基于SpringBoot使用MyBatisPlus MyBatisPlus入门案例 我们以基于SpringBoot使用MyBatisPlus为案...
MyBatisPlus使用Version注解(乐观锁) Version 描述:乐观锁注解、标记@Verison在字段上 MybatisPlus有一个乐观锁注解,在使用的时候遇到一些问题。 乐观锁的字段在基类中,模型如下: @DatapublicclassTblBase{@TableId(type = IdType.ASSIGN_ID)privateLong id;privateDate createTime;@VersionprivateDate lastUpdateTime...
然后在版本3.4.0开始废弃了这种用法,我们可以看到源码提供的注释 旧版: 新版: 新版增加了MybatisPlusInterceptor,这个相当于总的拦截器类,把原来的那些类放到上面成为内部类,用了跟spring一样的思想 我们可以通过这个方法,配置之前的插件,而且他还是一个List集合,我们可以同时配置多个插件,拿乐观锁插件与分页插件来说来...
如果MyBatis Plus的乐观锁更新不成功,可能有以下几个原因: 数据库中的版本号与更新前的版本号不匹配。乐观锁是通过比较版本号来判断是否可以更新的,如果版本号不一致,则更新会失败。解决方法是检查更新前后的版本号是否正确。 更新语句没有设置版本号的更新。乐观锁需要在更新语句中设置版本号的更新,例如:UPDATE tabl...
今天在使用mybatis-plus乐观锁插件时,发现乐观锁并没有生效。 查了问题发现首先需要查询出结果(也就是需要version),然后再进行更新,这样乐观锁就能起作用了。 文档:https://mybatis.plus/guide/interceptor-optimistic-locker.html#optimisticlockerinnerinterceptor ...
最终,因为项目中引入了Mybatis-Plus,大家逐渐定位到了@version这一个注解上。 在官方文档中,version注解并没有太多解释,但是我们都知道乐观锁的原理。 1 在取出记录时,获取当前的数据version=1 2 代码更新时,带上这个 version 1 3 执行更新时,set version = version +1 where version = version ...