Mybatis plus邏輯刪除失敗的BUG操作
開發(fā)調(diào)試的時候發(fā)現(xiàn)Mybatis Plus的邏輯刪除失效了,看了下配置文件發(fā)現(xiàn)沒有問題,通過查看以下源碼發(fā)現(xiàn)

邏輯刪除需要注入的bean,查看這個bean的源碼如下

查看其中一個實例的類的源碼,如通過ID邏輯刪除LogicDeleteById的源碼,如下

mp在項目啟動時預(yù)加載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)中的,當(dāng)邏輯刪除字段在所有的字段中間而不是末尾的時候,判斷邏輯刪除的表示logicDelete會被覆蓋為false,然后導(dǎo)致解析方法生成聲明的時候判斷為沒有開啟邏輯刪除。

mp已經(jīng)更新了這個錯誤,在設(shè)置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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Map集合中g(shù)et不存在的key值,會拋出異常嗎?
這篇文章主要介紹了淺談Map集合中g(shù)et不存在的key值,會拋出異常嗎?具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Spring boot配置多數(shù)據(jù)源代碼實例
這篇文章主要介紹了Spring boot配置多數(shù)據(jù)源代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
Java如何根據(jù)key值修改Hashmap中的value值
這篇文章主要介紹了Java如何根據(jù)key值修改Hashmap中的value值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
JAVA加密算法- 非對稱加密算法(DH,RSA)的詳細介紹
這篇文章主要介紹了JAVA加密算法- 非對稱加密算法(DH,RSA),詳細介紹了DH,RSA的用法和示例,需要的朋友可以了解一下。2016-11-11
java + dom4j.jar提取xml文檔內(nèi)容
這篇文章主要為大家詳細介紹了java + dom4j.jar提取xml文檔內(nèi)容,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼
這篇文章主要介紹了SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
springboot 配置文件配置項前綴為0的數(shù)字特殊處理方式
這篇文章主要介紹了springboot 配置文件配置項前綴為0的數(shù)字特殊處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

