最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatisplus邏輯刪除基本實現(xiàn)和坑點解決

 更新時間:2023年03月30日 10:28:04   作者:你懂的哈  
這篇文章主要介紹了mybatisplus邏輯刪除基本實現(xiàn)和坑點解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

當(dāng)你在使用Mybatis 時進行配置的時候有這樣幾個坑一定要注意下。

mybatisplus中邏輯刪除通俗說為了在數(shù)據(jù)庫中保留數(shù)據(jù),但是又不想進行其他一些sql語句時有他(剛剛通過邏輯刪除了的)的存在。

就是在數(shù)據(jù)庫中添加一字段,通過數(shù)值內(nèi)容來說明那些是指刪除了的即可

mp邏輯刪除的基本實現(xiàn)

步驟一(添加數(shù)據(jù)庫對應(yīng)字段)

首先數(shù)據(jù)庫中添加對應(yīng)字段(此處通過deleted字段代表邏輯刪除字段,即0為未被刪除,1為已刪除)

Alt

步驟二(邏輯刪除的實現(xiàn)) 

1.方法一(單表注解設(shè)置)

在數(shù)據(jù)表對象層中對應(yīng)對類的對應(yīng)字段中通過注解實現(xiàn)(@TableLogic(),這里value和delval就是mp給我們定義的是否刪除的標(biāo)記,數(shù)值由開發(fā)者設(shè)定)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    private Long id;
    private String type;
    private String name;
    private String description;
    
    //邏輯刪除(就是在delete字段做標(biāo)記,不是真正意義上的刪除)
    @TableLogic(value = "0",delval = "1")
    private Integer deleted;
}

2.方法二(全局配置文件設(shè)置)

通過配置實現(xiàn)。這樣實現(xiàn)的就比較全局,沒有指定那個指定數(shù)據(jù)表對象層中對應(yīng)對類的對應(yīng)字段實現(xiàn)邏輯刪除這個功能,只要擁有全局設(shè)置一樣的字段即可。

(這使用springboot框架的application.yml配置為例,其中l(wèi)ogic-delete-field是指要指定字段名,logic-delete-value:是刪除后設(shè)置成的值,logic-not-delete-value是未刪除的值是什么)

#  mp日志
mybatis-plus:
    db-config:
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

步驟三(測試)

在測試類中測試并查看數(shù)據(jù)庫對應(yīng)表的對應(yīng)測試數(shù)據(jù)有什么變化。

在此測試中發(fā)現(xiàn),數(shù)據(jù)庫表對應(yīng)的數(shù)據(jù)并沒有真正意義上的刪除,只是在對應(yīng)字段做好了設(shè)定好的標(biāo)記。

而且在其他mp操作此表時并沒有這條數(shù)據(jù)的參與,即實現(xiàn)開發(fā)者想刪除某條數(shù)據(jù),但又想數(shù)據(jù)庫能保留這個數(shù)據(jù)記錄。

1.測試類進行邏輯刪除測試代碼

這是通過id實現(xiàn)邏輯刪除

    @Autowired
    private BookDao bookDao;
    @Test
    public void deleteById(){
        int i = bookDao.deleteById(12L);
        System.out.println("影響行數(shù)為:"+i+"條");
    }

2.刪除后數(shù)據(jù)表對應(yīng)數(shù)據(jù)變化

id為12數(shù)據(jù)對應(yīng)的deleted已經(jīng)變成了1

Alt

3.測試其他mp操作是否有對標(biāo)記刪除了的數(shù)據(jù)有“參與”

此處是對上面操作完成后進行的mp操作(查詢表中所有數(shù)據(jù)所有)

    @Autowired
    private BookDao bookDao;
    @Test
    void findAll() {
        List<Book> books = bookDao.selectList(null);
        for (Book book :books) {
            System.out.println(book);
        }
    }

結(jié)果如下(顯然,id為12的數(shù)據(jù)并沒有查詢出來,但是數(shù)據(jù)庫還是存在此條數(shù)據(jù)。)

在這里插入圖片描述

mp邏輯刪除不生效

我這總結(jié)了幾個可能遇到的一些僅僅關(guān)于mp邏輯刪除本身可能出現(xiàn)的問題解決參考(排除一些其他因素,單純講講mp邏輯刪除本身的坑點)

坑點一

報錯點: Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘deleted’ in ‘where clause’
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column ‘deleted’ in ‘where clause’:

原因解釋就跳過了,解決方法其實就是只要把設(shè)定的刪除字段設(shè)置為“deleted”即可(也多注意邏輯刪除需要添加的數(shù)據(jù)庫字段得用“deleted”命名,不然可能就會報上面這個報錯點了)。

坑點二

報錯點:就是在多個表使用mp操作的時候,注意一些全局設(shè)置和局部設(shè)置區(qū)別。

例如這篇所說的mp邏輯刪除內(nèi)容,實現(xiàn)有兩個方法,分別是數(shù)據(jù)表對象層中對應(yīng)對類的對應(yīng)字段中通過注解實現(xiàn)@TableLogic()和全局變量配置中設(shè)置。

注意如果設(shè)置成了局部,那么就只是針對設(shè)置了的實現(xiàn),如果設(shè)置了全局,則所有設(shè)置了邏輯刪除字段(deleted)在進行mp刪除操作時,都是進行邏輯刪除操作。

解決方法就是根據(jù)實際開發(fā)需求,實際操作設(shè)置即可。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript最新2020經(jīng)典面試題

    javascript最新2020經(jīng)典面試題

    這篇文章主要介紹了javascript最新2020經(jīng)典面試題的相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • SpringBoot中@Configuration和@Bean和@Component相同點詳解

    SpringBoot中@Configuration和@Bean和@Component相同點詳解

    這篇文章主要介紹了SpringBoot中@Configuration和@Bean和@Component相同點詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • postman中參數(shù)和x-www-form-urlencoded傳值的區(qū)別及說明

    postman中參數(shù)和x-www-form-urlencoded傳值的區(qū)別及說明

    在Postman中,參數(shù)傳遞有多種方式,其中params和x-www-form-urlencoded最為常用,Params主要用于URL中傳遞查詢參數(shù),適合GET請求和非敏感數(shù)據(jù),其特點是將參數(shù)作為查詢字符串附加在URL末尾,適用于過濾和排序等操作
    2024-09-09
  • SpringBoot啟動參數(shù)的實現(xiàn)

    SpringBoot啟動參數(shù)的實現(xiàn)

    SpringBoot通過jar文件方式啟動,配置可以通過啟動參數(shù)進行覆蓋,本文就來介紹一下SpringBoot啟動參數(shù)的實現(xiàn),感興趣的可以了解一下
    2025-01-01
  • java同步之如何寫一個鎖Lock

    java同步之如何寫一個鎖Lock

    本篇文章的目標(biāo)一是自己動手寫一個鎖,這個鎖的功能很簡單,能進行正常的加鎖、解鎖操作。能更好地理解后面章節(jié)將要學(xué)習(xí)的AQS及各種同步器實現(xiàn)的原理。下面小編來和大家一起學(xué)習(xí)下吧
    2019-05-05
  • spring?cloud?eureka?服務(wù)啟動失敗的原因分析及解決方法

    spring?cloud?eureka?服務(wù)啟動失敗的原因分析及解決方法

    這篇文章主要介紹了spring?cloud?eureka?服務(wù)啟動失敗的原因解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Java?詳解分析鏈表的中間節(jié)點

    Java?詳解分析鏈表的中間節(jié)點

    鏈表是基本的數(shù)據(jù)結(jié)構(gòu)之一,面試題中鏈表占很大一部分,可見鏈表操作是非常重要的。本篇文章我們來探究一下如何獲取鏈表的中間節(jié)點
    2022-01-01
  • 解決在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動注解也設(shè)置了)

    解決在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動注解也設(shè)置了)

    這篇文章主要介紹了在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動注解也設(shè)置了),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • java類的全限定名是什么

    java類的全限定名是什么

    Java中的全限定名指的是包含包名和類名的完整標(biāo)識,例如“java.lang.String”,而非限定名僅指類名,如“String”,全限定名用于區(qū)分不同包中相同名字的類,避免引用混淆,特別是在有多個包含相同類名的庫時
    2024-09-09
  • Java基礎(chǔ)之初識Maven

    Java基礎(chǔ)之初識Maven

    這篇文章主要介紹了Java基礎(chǔ)之初識Maven,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05

最新評論

藁城市| 桐梓县| 东兴市| 邻水| 霍城县| 德庆县| 台中市| 汝南县| 仙桃市| 宁乡县| 盐亭县| 徐闻县| 桑植县| 清丰县| 新平| 甘肃省| 双桥区| 丘北县| 平远县| 额尔古纳市| 剑河县| 富源县| 万源市| 大丰市| 军事| 布尔津县| 渝中区| 嘉荫县| 甘谷县| 资中县| 新河县| 潍坊市| 康乐县| 固阳县| 西华县| 舟曲县| 额济纳旗| 达州市| 香港| 滨州市| 荆门市|