Mybatis-Plus乐观锁配置流程
一.乐观锁实现
1.配置插件
(1).XML方式
<bean class="com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor" id="optimisticLockerInnerInterceptor"/>
<bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
<property name="interceptors">
<list>
<ref bean="optimisticLockerInnerInterceptor"/>
</list>
</property>
</bean>
(2).Springboot注解方式
下方为博主使用时场景 单独写config带@Bean注解
private MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mpi = new MybatisPlusInterceptor();
//添加乐观锁拦截器
mpi.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mpi;
}
单独写config文件如下:
// Spring Boot 方式
@Configuration
@MapperScan("按需修改")
public class MybatisPlusConfig {
/**
* 旧版
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
/**
* 新版
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
}
2.实体类字段增加注解
@Version private Integer versionNumber;
注意:支持的数据类型有
int,Integer,long,Long,Date,Timestamp,LocalDateTime并且仅支持updateById(id) 与 update(entity, wrapper)方法在update(entity, wrapper)方法下, wrapper 不能复用!!!
二.Parameter ‘MP_OPTLOCK_VERSION_ORIGINAL‘ not found. Available parameters are [param1, et]问题解决
本身乐观锁使用比较简单 但是遇到了乐观锁插件注入失败问题 网上解决思路如下:
1、先在数据库表中添加version字段
2、在实体类中定义version字段,并使用@Version注解标记
3、在mybatis-plus拦截器中添加OptimisticLockerInnerInterceptor()乐观锁拦截器
但是并未解决我的问题 随后查看项目 发现项目中已经创建了一个sqlSessionFactory:

本身mybatisplus在启动项目时会自动扫描并注入相关插件 但是此处单独配置后 并且添加了@Primary注解 后续就只会走此处的配置 所以我们在外部添加的添加乐观锁插件实际并未真正添加成功 或者说并没有走我们添加乐观锁插件的代码 解决如下:


还有一种思路就是 启动类禁用掉之前配置 那我们单独写的添加乐观锁配置类也可以生效~
以上就是Mybatis-Plus乐观锁配置流程的详细内容,更多关于Mybatis-Plus乐观锁的资料请关注脚本之家其它相关文章!
相关文章
关于pom.xml中maven无法下载springcloud包问题
小编遇到这样一个问题spring-cloud-starter-feign,spring-cloud-starter-eureka 一直无法下载,maven仓库中包路径显示为unknown,怎么解决呢?下面小编给大家带来了pom.xml中maven无法下载springcloud包问题,需要的朋友可以参考下2022-08-08
剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换
跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化2022-03-03
SpringBoot中@ComponentScan的使用详解
这篇文章主要介绍了SpringBoot中@ComponentScan的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
处理Log4j2不能打印行号的问题(AsyncLogger)
这篇文章主要介绍了处理Log4j2不能打印行号的问题(AsyncLogger),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12
Logger.getLogger()与LogFactory.getLog()的区别详解
LogFactory来自common-logging包。如果用LogFactory.getLog,你可以用任何实现了通用日志接口的日志记录器替换log4j,而程序不受影响2013-09-09


最新评论