Mybatis plus邏輯刪除失敗的BUG操作
開發調試的時候發現Mybatis Plus的邏輯刪除失效了,看了下配置文件發現沒有問題,通過查看以下源碼發現
邏輯刪除需要注入的bean,查看這個bean的源碼如下
查看其中一個實例的類的源碼,如通過ID邏輯刪除LogicDeleteById的源碼,如下
mp在項目啟動時預加載SQL是通過TableInfo中logicDelete字段判斷是否開啟邏輯刪除的。然后讓我們來看看mp內部是如何判斷是否開啟邏輯刪除的。
先看如下源碼
大概就是講實體類中的字段進行循環映射數據庫字段并封裝到TableFieldInfo類中,實體類信息封裝到TableInfo中,在讓我們來看看MP循環處理字段時候做了什么操作。
上圖中的這一行代碼,
讓我們看看這行代碼具體做了什么
現在已經很明確了,mp通過判斷字段上是否有TableLogic注解來判斷該實體類映射的表是否開啟邏輯刪除。但這一步是放到實體類所有的字段列表的循環中的,當邏輯刪除字段在所有的字段中間而不是末尾的時候,判斷邏輯刪除的表示logicDelete會被覆蓋為false,然后導致解析方法生成聲明的時候判斷為沒有開啟邏輯刪除。
mp已經更新了這個錯誤,在設置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操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. Oracle與Access表之間的導入和導出2. 恢復從 Access 2000、 Access 2002 或 Access 2003 中數據庫刪除表的方法3. DB2用戶觀點:pureQuery和DB2 9的閃光點4. Oracle PL/SQL語言初級教程之操作和控制語言5. SQL Server根據查詢結果,生成XML文件6. Windwos下MySQL 64位壓縮包的安裝方法學習記錄7. 講解SQL Server數據庫備份的多種方式8. 建立合理的索引提高SQL Server的性能9. MySQL找出未提交事務的SQL實例淺析10. IBM 數據庫 DB2 9 的九大新特性(1)
