欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis-Plus邏輯刪除的用法詳解

 更新時(shí)間:2023年07月06日 10:00:25   作者:程序猿小張丶  
這篇文章主要為大家詳細(xì)介紹了Mybatis-Plus 邏輯刪除的用法,文中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

簡(jiǎn)介

說(shuō)明

本文介紹Mybatis-Plus的邏輯刪除的用法。

刪除功能是項(xiàng)目中經(jīng)常見(jiàn)到的需求。比如:需要?jiǎng)h除一個(gè)訂單,一般不會(huì)把實(shí)際數(shù)據(jù)刪除,而是邏輯刪除。一般表中有一個(gè)is_deleted字段標(biāo)識(shí)該用戶是否被刪除,0 表示未刪除 1 表示已刪除。

配置(非必須)

配置刪除未刪除的狀態(tài)碼

配置未刪除、已刪除分別標(biāo)識(shí)的狀態(tài)碼是什么,這里采用的yml格式。

mybatis-plus:
  global-config:
    db-config:
      # 1 代表已刪除。默認(rèn)是1。也可寫(xiě)為字段名,如:id,這樣刪除時(shí)會(huì)將id的值寫(xiě)到邏輯刪除字段
      logic-delete-value: 1
      # 0 代表未刪除。默認(rèn)是0
      logic-not-delete-value: 0

全局配置字段名(可不配置)

若項(xiàng)目代碼比較規(guī)范,所有表的邏輯刪除字段使用相同的名稱(比如:deleted_flag),我們可以在 application.properties 中添加如下統(tǒng)一的配置,這樣對(duì)應(yīng)的實(shí)體類字段上就不需要再添加 @TableLogic 注解了:

注意:如果設(shè)置了全局邏輯刪除字段值,實(shí)體類上仍然有 @TableLogic 則以實(shí)體上的為準(zhǔn),忽略全局。

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted_flag

entity

實(shí)體類對(duì)應(yīng)的字段上加上注解@TableLogic

@Data
@TableName("t_user")
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableLogic
    private String deleted;
}

數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)deleted列,設(shè)置為tinyint類型,長(zhǎng)度為1

測(cè)試

插入測(cè)試

插入時(shí),sql語(yǔ)句不會(huì)涉及邏輯刪除的字段。

查詢、修改測(cè)試

使用MP邏輯刪除的功能之后,執(zhí)行查詢、修改的方法,MP會(huì)為我們自動(dòng)加上未刪除的條件。自定義sql除外

    @Test
    public void select(){
        List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
        users.forEach(System.out::println);
    }
    @Test
    public void update(){
        User user = new User();
        user.setEmail("Test@email.com");
        int update = userMapper.update(user, Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
        System.out.println(update);
    }
DEBUG==>  Preparing: SELECT id,login_name,name,password,email,salt,sex,age,phone,user_type,status,organization_id,create_time,is_delete FROM sys_user WHERE deleted='0' AND age = ? 
DEBUG==> Parameters: 18(Integer)
DEBUG<==      Total: 0
DEBUG==>  Preparing: UPDATE sys_user SET email=? WHERE deleted='0' AND age = ? 
DEBUG==> Parameters: Test@email.com(String), 18(Integer)
DEBUG<==    Updates: 0

刪除測(cè)試

(執(zhí)行的SQL語(yǔ)句是UPDATE)

@Test
    public void delete() {
        int i = userMapper.deleteById(1);
        System.out.println(i);
    }
DEBUG==>  Preparing: UPDATE sys_user SET is_delete='1' WHERE id=? AND deleted='0' 
DEBUG==> Parameters: 1(Integer)
DEBUG<==    Updates: 1

不查詢is_deleted字段

@TableField(select = false)即可。還可使用Wrapper的select表達(dá)式來(lái)排除某些查詢字段,只是通過(guò)注解的方式更方便。

    @TableLogic
    @TableField(select = false)
    private String deleted;

到此這篇關(guān)于Mybatis-Plus邏輯刪除的用法詳解的文章就介紹到這了,更多相關(guān)Mybatis-Plus邏輯刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Graphics實(shí)現(xiàn)界面顯示文字并換行

    Java Graphics實(shí)現(xiàn)界面顯示文字并換行

    Java中Graphics類提供了一些基本的幾何圖形繪制方法,本文將利用Graphics實(shí)現(xiàn)界面顯示文字并換行效果,感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-08-08
  • 如何通過(guò)Java實(shí)現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片

    如何通過(guò)Java實(shí)現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片

    在Java中,將PDF文件轉(zhuǎn)換為高質(zhì)量的圖片可以使用不同的庫(kù),其中最常用的庫(kù)之一是?Apache?PDFBox,下面我們就來(lái)看看這個(gè)庫(kù)的具體使用吧
    2024-10-10
  • springboot+mybatis-plus實(shí)現(xiàn)自動(dòng)建表的示例

    springboot+mybatis-plus實(shí)現(xiàn)自動(dòng)建表的示例

    本文主要介紹了springboot+mybatis-plus實(shí)現(xiàn)自動(dòng)建表的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java面向?qū)ο蟮姆庋b特征深度解析

    Java面向?qū)ο蟮姆庋b特征深度解析

    在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來(lái)的方法。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問(wèn)
    2021-10-10
  • JAVA如何獲取客戶端IP地址和MAC地址

    JAVA如何獲取客戶端IP地址和MAC地址

    本篇文章主要介紹了JAVA如何獲取客戶端IP地址和MAC地址非常具有實(shí)用價(jià)值,這里整理了詳細(xì)的代碼,需要的朋友可以參考下
    2017-08-08
  • 大模型chat/completions和completions區(qū)別解析

    大模型chat/completions和completions區(qū)別解析

    OpenAI的completions和chat/completions是兩個(gè)不同的端點(diǎn),completions用于單次文本補(bǔ)全,而chat/completions用于多輪對(duì)話生成,選擇哪個(gè)端點(diǎn)取決于你的具體需求,本文介紹大模型chat/completions和completions區(qū)別,感興趣的朋友一起看看吧
    2025-03-03
  • 如何實(shí)現(xiàn)Java線程安全問(wèn)題

    如何實(shí)現(xiàn)Java線程安全問(wèn)題

    這篇文章主要介紹了如何實(shí)現(xiàn)Java線程安全問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Spring整合JUnit詳解

    Spring整合JUnit詳解

    Spring?是目前主流的?Java?Web?開(kāi)發(fā)框架,是?Java?世界最為成功的框架。該框架是一個(gè)輕量級(jí)的開(kāi)源框架,這篇文章主要介紹如何配置數(shù)據(jù)源、注解開(kāi)發(fā)以及整合Junit,感興趣的同學(xué)可以參考一下
    2023-04-04
  • java發(fā)送http請(qǐng)求并獲取狀態(tài)碼的簡(jiǎn)單實(shí)例

    java發(fā)送http請(qǐng)求并獲取狀態(tài)碼的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇java發(fā)送http請(qǐng)求并獲取狀態(tài)碼的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • java 8 lambda表達(dá)式中的異常處理操作

    java 8 lambda表達(dá)式中的異常處理操作

    這篇文章主要介紹了java 8 lambda表達(dá)式中的異常處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09

最新評(píng)論