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 不能復(fù)用!!!
二.Parameter ‘MP_OPTLOCK_VERSION_ORIGINAL‘ not found. Available parameters are [param1, et]問題解決
本身樂觀鎖使用比較簡單 但是遇到了樂觀鎖插件注入失敗問題 網(wǎng)上解決思路如下:
1、先在數(shù)據(jù)庫表中添加version字段
2、在實體類中定義version字段,并使用@Version注解標(biāo)記
3、在mybatis-plus攔截器中添加OptimisticLockerInnerInterceptor()樂觀鎖攔截器
但是并未解決我的問題 隨后查看項目 發(fā)現(xiàn)項目中已經(jīng)創(chuàng)建了一個sqlSessionFactory:
本身mybatisplus在啟動項目時會自動掃描并注入相關(guān)插件 但是此處單獨配置后 并且添加了@Primary注解 后續(xù)就只會走此處的配置 所以我們在外部添加的添加樂觀鎖插件實際并未真正添加成功 或者說并沒有走我們添加樂觀鎖插件的代碼 解決如下:
還有一種思路就是 啟動類禁用掉之前配置 那我們單獨寫的添加樂觀鎖配置類也可以生效~
以上就是Mybatis-Plus樂觀鎖配置流程的詳細(xì)內(nèi)容,更多關(guān)于Mybatis-Plus樂觀鎖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot項目啟動執(zhí)行任務(wù)的多種方法小結(jié)
這篇文章主要介紹了SpringBoot項目啟動執(zhí)行任務(wù)的多種方法小結(jié),本文給大家分享的這幾種方法經(jīng)常會被用到,當(dāng)我們的項目啟動后需要調(diào)用對應(yīng)的方法,用來項目的初始化等,本文通過示例代碼講解的非常詳細(xì),需要的朋友參考下吧2023-07-07關(guān)于pom.xml中maven無法下載springcloud包問題
小編遇到這樣一個問題spring-cloud-starter-feign,spring-cloud-starter-eureka 一直無法下載,maven倉庫中包路徑顯示為unknown,怎么解決呢?下面小編給大家?guī)砹藀om.xml中maven無法下載springcloud包問題,需要的朋友可以參考下2022-08-08Java利用位運(yùn)算實現(xiàn)乘法運(yùn)算詳解
這篇文章主要為大家詳細(xì)介紹了Java如何用位運(yùn)算實現(xiàn)乘法運(yùn)算,在實現(xiàn)乘法時要用位運(yùn)算實現(xiàn),并且不能出現(xiàn)加減乘除任何符號,感興趣的可以了解一下2023-04-04劍指Offer之Java算法習(xí)題精講數(shù)組與列表的查找及字符串轉(zhuǎn)換
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03SpringBoot中@ComponentScan的使用詳解
這篇文章主要介紹了SpringBoot中@ComponentScan的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11處理Log4j2不能打印行號的問題(AsyncLogger)
這篇文章主要介紹了處理Log4j2不能打印行號的問題(AsyncLogger),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Logger.getLogger()與LogFactory.getLog()的區(qū)別詳解
LogFactory來自common-logging包。如果用LogFactory.getLog,你可以用任何實現(xiàn)了通用日志接口的日志記錄器替換log4j,而程序不受影響2013-09-09