亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatisplus的邏輯刪除問題怎么解決

發布時間:2023-03-10 10:45:02 來源:億速云 閱讀:282 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“mybatisplus的邏輯刪除問題怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“mybatisplus的邏輯刪除問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

mybatisplus的邏輯刪除

mp提供的邏輯刪除實現起來非常簡單

只需要在application.yml中進行邏輯刪除的相關配置即可

mybatis-plus:  
  global-config:  
    db-config:  
      logic-delete-field: deleted # 全局邏輯刪除的實體字段名  
      logic-delete-value: 1 # 邏輯已刪除值(默認為1)  
      logic-not-delete-value: 0 # 邏輯未刪除值(默認為0)  
      # 若邏輯已刪除和未刪除的值和默認值一樣,則可以不配置這2項

測試代碼

int i = mapper.deleteById(6);  
		System.out.println("rowAffected = " + i);

mybatisplus的邏輯刪除問題怎么解決

可以看到,發出的SQL不再是DELETE,而是UPDATE

此時我們再執行一次SELECT

@Test  
public void testSelect() {  
	List<User2> users = mapper.selectList(null);  
}

mybatisplus的邏輯刪除問題怎么解決

可以看到,發出的SQL語句,會自動在WHERE后面拼接邏輯未刪除的條件。

查詢出來的結果中,沒有了id為6的王軟蛋。

若想要SELECT的列,不包括邏輯刪除的那一列,則可以在實體類中通過@TableField進行配置

@TableField(select = false)  
private Integer deleted;

可以看到下圖的執行結果中,SELECT中已經不包含deleted這一列了

mybatisplus的邏輯刪除問題怎么解決

前面在application.yml中做的配置,是全局的。通常來說,對于多個表,我們也會統一邏輯刪除字段的名稱,統一邏輯已刪除和未刪除的值,所以全局配置即可。

當然,若要對某些表進行單獨配置,在實體類的對應字段上使用@TableLogic即可。

@TableLogic(value = "0", delval = "1")  
private Integer deleted;

【小結】

開啟mp的邏輯刪除后,會對SQL產生如下的影響

  • INSERT語句:沒有影響

  • SELECT語句:追加WHERE條件,過濾掉已刪除的數據

  • UPDATE語句:追加WHERE條件,防止更新到已刪除的數據

  • DELETE語句:轉變為UPDATE語句

注意,上述的影響,只針對mp自動注入的SQL生效。如果是自己手動添加的自定義SQL,則不會生效。

比如:

public interface User2Mapper extends BaseMapper<User2> {  
	@Select("select * from user2")  
	List<User2> selectRaw();  
}

調用這個selectRaw,則mp的邏輯刪除不會生效。

另,邏輯刪除可在application.yml中進行全局配置,也可在實體類中用@TableLogic進行局部配置。

使用mybatisplus邏輯刪除,修改含有邏輯刪除的字段爆錯

mybatisplus在配置文件中配置如下

mybatisplus的邏輯刪除問題怎么解決

以上是全局邏輯刪除配置。

當使用mybatisplus生成的修改方法,修改含有showStatus對應的字段時,會報錯。

錯誤sql語句如下

mybatisplus的邏輯刪除問題怎么解決

而我要修改的如下:

mybatisplus的邏輯刪除問題怎么解決

正確的修改的sql語句應該如下:

mybatisplus的邏輯刪除問題怎么解決

所以我們可以在xml文件中單獨寫sql語句

或者不在配置文件中設置邏輯刪除字段名 使用@TableLogic注解

如下:

mybatisplus的邏輯刪除問題怎么解決

showStatus是表示此信息是否顯示。

如:

mybatisplus的邏輯刪除問題怎么解決

表示 show_status等于0時 brand_id (即id)=1591652104429125634 的信息不顯示。

這樣我們就是局部使用邏輯刪除。

讀到這里,這篇“mybatisplus的邏輯刪除問題怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开远市| 古田县| 宁化县| 米脂县| 海安县| 长寿区| 西畴县| 镇坪县| 紫阳县| 淮阳县| 醴陵市| 奈曼旗| 合作市| 铅山县| 蒲城县| 东山县| 兰州市| 隆昌县| 安国市| 翼城县| 杭锦后旗| 虎林市| 大田县| 梧州市| 慈利县| 博白县| 宜州市| 襄城县| 武宁县| 聂荣县| 图木舒克市| 巴彦淖尔市| 花莲市| 荆门市| 曲周县| 溆浦县| 隆化县| 合肥市| 怀集县| 唐山市| 深泽县|