亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

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

Alt

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

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

在數(shù)據(jù)表對(duì)象層中對(duì)應(yīng)對(duì)類(lèi)的對(duì)應(yīng)字段中通過(guò)注解實(shí)現(xiàn)(@TableLogic(),這里value和delval就是mp給我們定義的是否刪除的標(biāo)記,數(shù)值由開(kāi)發(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è)置)

通過(guò)配置實(shí)現(xiàn)。這樣實(shí)現(xiàn)的就比較全局,沒(méi)有指定那個(gè)指定數(shù)據(jù)表對(duì)象層中對(duì)應(yīng)對(duì)類(lèi)的對(duì)應(yīng)字段實(shí)現(xiàn)邏輯刪除這個(gè)功能,只要擁有全局設(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

步驟三(測(cè)試)

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

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

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

1.測(cè)試類(lèi)進(jìn)行邏輯刪除測(cè)試代碼

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

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

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

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

Alt

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

此處是對(duì)上面操作完成后進(jìn)行的mp操作(查詢(xún)表中所有數(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ù)并沒(méi)有查詢(xún)出來(lái),但是數(shù)據(jù)庫(kù)還是存在此條數(shù)據(jù)。)

在這里插入圖片描述

mp邏輯刪除不生效

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

坑點(diǎn)一

報(bào)錯(cuò)點(diǎn): 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’:

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

坑點(diǎn)二

報(bào)錯(cuò)點(diǎn):就是在多個(gè)表使用mp操作的時(shí)候,注意一些全局設(shè)置和局部設(shè)置區(qū)別。

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

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

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

總結(jié)

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

相關(guān)文章

  • Java實(shí)現(xiàn)文件上傳的方法

    Java實(shí)現(xiàn)文件上傳的方法

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)文件上傳的方法,供大家參考,感興趣的朋友可以參考一下
    2016-05-05
  • 基于JDK動(dòng)態(tài)代理原理解析

    基于JDK動(dòng)態(tài)代理原理解析

    這篇文章主要介紹了基于JDK動(dòng)態(tài)代理原理解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java如何獲取List<String>中的String詳解

    Java如何獲取List<String>中的String詳解

    工作了這么長(zhǎng)時(shí)間了,一直沒(méi)有記錄的習(xí)慣,以至于導(dǎo)致我即便是查過(guò)的東西總會(huì)忘記,下面這篇文章主要給大家介紹了關(guān)于Java如何獲取List<String>中String的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • java程序中的延時(shí)加載異常及解決方案

    java程序中的延時(shí)加載異常及解決方案

    這篇文章主要介紹了java程序中的延時(shí)加載異常及解決方案,需要的朋友可以參考下
    2015-02-02
  • SpringBoot之核心依賴(lài)和自動(dòng)配置方式

    SpringBoot之核心依賴(lài)和自動(dòng)配置方式

    這篇文章主要介紹了SpringBoot之核心依賴(lài)和自動(dòng)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決IDEA創(chuàng)建maven項(xiàng)目時(shí)pom.xml沒(méi)有變藍(lán)的問(wèn)題

    解決IDEA創(chuàng)建maven項(xiàng)目時(shí)pom.xml沒(méi)有變藍(lán)的問(wèn)題

    這篇文章主要介紹了解決IDEA創(chuàng)建maven項(xiàng)目時(shí)pom.xml沒(méi)有變藍(lán)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • SpringBoot配置actuator的代碼

    SpringBoot配置actuator的代碼

    這篇文章主要介紹了SpringBoot配置actuator,這里大家需要注意可以監(jiān)控SpringBoot?中的?Tomcat?性能數(shù)據(jù),?以日志形式定期輸出監(jiān)控?cái)?shù)據(jù),?只需要配置一個(gè)Bean,需要的朋友可以參考下
    2022-03-03
  • 使用@ControllerAdvice同時(shí)配置過(guò)濾多個(gè)包

    使用@ControllerAdvice同時(shí)配置過(guò)濾多個(gè)包

    這篇文章主要介紹了使用@ControllerAdvice同時(shí)配置過(guò)濾多個(gè)包的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談Java的兩種多線程實(shí)現(xiàn)方式

    淺談Java的兩種多線程實(shí)現(xiàn)方式

    本篇文章主要介紹了淺談Java的兩種多線程實(shí)現(xiàn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Java并發(fā)編程之ReadWriteLock讀寫(xiě)鎖的操作方法

    Java并發(fā)編程之ReadWriteLock讀寫(xiě)鎖的操作方法

    這篇文章主要介紹了Java并發(fā)編程之ReadWriteLock讀寫(xiě)鎖的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論