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乐观锁的资料请关注脚本之家其它相关文章!
相关文章
springcloud3 Sentinel的搭建及案例操作方法
Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案,这篇文章主要介绍了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以参考下2023-01-01SpringBoot服务设置禁止server.point端口的使用
本文主要介绍了SpringBoot服务设置禁止server.point端口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-01-01
最新评论