Mybatis-Plus樂觀鎖配置流程
一.樂觀鎖實現(xiàn)
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;
注意:支持的數(shù)據(jù)類型有
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]問題解決
本身樂觀鎖使用比較簡單 但是遇到了樂觀鎖插件注入失敗問題 網(wǎng)上解決思路如下:
1、先在數(shù)據(jù)庫表中添加version字段
2、在實體類中定義version字段,并使用@Version注解標記
3、在mybatis-plus攔截器中添加OptimisticLockerInnerInterceptor()樂觀鎖攔截器
但是并未解決我的問題 隨后查看項目 發(fā)現(xiàn)項目中已經(jīng)創(chuàng)建了一個sqlSessionFactory:

本身mybatisplus在啟動項目時會自動掃描并注入相關插件 但是此處單獨配置后 并且添加了@Primary注解 后續(xù)就只會走此處的配置 所以我們在外部添加的添加樂觀鎖插件實際并未真正添加成功 或者說并沒有走我們添加樂觀鎖插件的代碼 解決如下:


還有一種思路就是 啟動類禁用掉之前配置 那我們單獨寫的添加樂觀鎖配置類也可以生效~
以上就是Mybatis-Plus樂觀鎖配置流程的詳細內(nèi)容,更多關于Mybatis-Plus樂觀鎖的資料請關注腳本之家其它相關文章!
相關文章
Springboot中實現(xiàn)接口冪等性的4種方案小結(jié)
本文主要介紹了Springboot中實現(xiàn)接口冪等性,包含數(shù)據(jù)庫的冪等,數(shù)據(jù)庫的冪等,Redis的冪等性和Token + 時間戳的冪等性,具有一定的參考價值,感興趣的可以了解一下2024-03-03
一文帶你掌握Java開發(fā)者如何接入并使用DeepSeek
對于Java開發(fā)者來說,將DeepSeek集成到項目中,可以極大地提升數(shù)據(jù)處理和分析的效率,下面小編就來為大家介紹一下具體的調(diào)用方法吧2025-03-03
Java中Executor和Executors的區(qū)別小結(jié)
在Java并發(fā)編程中,Executor是一個核心接口,提供了任務執(zhí)行的抽象方法,而Executors是一個工具類,提供了創(chuàng)建各種線程池的工廠方法,Executor關注任務的執(zhí)行,而Executors關注如何創(chuàng)建適合的執(zhí)行器,感興趣的可以了解一下2024-10-10
MyBatis?超詳細講解動態(tài)SQL的實現(xiàn)
動態(tài)?SQL?是?MyBatis?的強大特性之一。如果你使用過?JDBC?或其它類似的框架,你應該能理解根據(jù)不同條件拼接?SQL?語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài)?SQL,可以徹底擺脫這種痛苦2022-03-03
在SpringBoot/SpringCloud中實現(xiàn)監(jiān)控埋點的具體實踐
這篇文章主要介紹了在 SpringBoot/SpringCloud 中如何實現(xiàn)監(jiān)控埋點,核心是構(gòu)建一個覆蓋指標收集、鏈路追蹤、日志聚合三個維度的可觀測性體系,需要的朋友可以參考下2025-11-11
spring中FactoryBean中的getObject()方法實例解析
這篇文章主要介紹了spring中FactoryBean中的getObject()方法實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
springboot使用Thymeleaf報錯常見的幾種解決方案
這篇文章主要介紹了springboot使用Thymeleaf報錯常見的幾種解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11

