您好,登錄后才能下訂單哦!
本篇文章為大家展示了Mybatis plus中出現(xiàn)邏輯刪除失敗的原因有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
開發(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時會先判斷原來的刪除標(biāo)識是否為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>
上述內(nèi)容就是Mybatis plus中出現(xiàn)邏輯刪除失敗的原因有哪些,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。