Mybatis plus邏輯刪除失敗的BUG操作
開發(fā)調(diào)試的時候發(fā)現(xiàn)Mybatis Plus的邏輯刪除失效了,看了下配置文件發(fā)現(xiàn)沒有問題,通過查看以下源碼發(fā)現(xiàn)
邏輯刪除需要注入的bean,查看這個bean的源碼如下
查看其中一個實例的類的源碼,如通過ID邏輯刪除LogicDeleteById的源碼,如下
mp在項目啟動時預加載SQL是通過TableInfo中l(wèi)ogicDelete字段判斷是否開啟邏輯刪除的。然后讓我們來看看mp內(nèi)部是如何判斷是否開啟邏輯刪除的。
先看如下源碼
大概就是講實體類中的字段進行循環(huán)映射數(shù)據(jù)庫字段并封裝到TableFieldInfo類中,實體類信息封裝到TableInfo中,在讓我們來看看MP循環(huán)處理字段時候做了什么操作。
上圖中的這一行代碼,
讓我們看看這行代碼具體做了什么
現(xiàn)在已經(jīng)很明確了,mp通過判斷字段上是否有TableLogic注解來判斷該實體類映射的表是否開啟邏輯刪除。但這一步是放到實體類所有的字段列表的循環(huán)中的,當邏輯刪除字段在所有的字段中間而不是末尾的時候,判斷邏輯刪除的表示logicDelete會被覆蓋為false,然后導致解析方法生成聲明的時候判斷為沒有開啟邏輯刪除。
mp已經(jīng)更新了這個錯誤,在設置logicDelete時會先判斷原來的刪除標識是否為true,否則保持原來的初始值false。
補充知識:分布式 mybatis-plus 邏輯刪除不生效 升級后org.mybatis.logging.LoggerFactory報錯
解決方案:
第一步:升級mybatisplus版本到3.2.0
第二步:多添加一個擴展包
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.2.0</version> </dependency>
以上這篇Mybatis plus邏輯刪除失敗的BUG操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解IDEA使用Maven項目不能加入本地Jar包的解決方法
這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08Java使用modbus4j實現(xiàn)modbus?tcp通訊
Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議,本文主要介紹了java如何使用modbus4j實現(xiàn)modbus?tcp通訊,感興趣的可以了解下2023-12-12freemarker簡介_動力節(jié)點Java學院整理
FreeMarker是一個模板引擎,一個基于模板生成文本輸出的通用工具,使用純Java編寫,有興趣的可以了解一下2017-08-08Java利用Reflect實現(xiàn)封裝Excel導出工具類
這篇文章主要為大家詳細介紹了Java如何利用Reflect實現(xiàn)封裝Excel導出工具類,文中的實現(xiàn)方法講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-11-11java中Hashtable和HashMap的區(qū)別分析
java中Hashtable和HashMap的區(qū)別分析,需要的朋友可以參考一下2013-04-04Java 如何將表格數(shù)據(jù)導入word文檔中
這篇文章主要介紹了Java將表格數(shù)據(jù)導入word文檔中的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06