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

MyBatis-Plus中的邏輯刪除功能及實(shí)例分析

 更新時(shí)間:2025年03月14日 11:38:30   作者:極客李華  
本文將詳細(xì)講解MyBatis-Plus中的邏輯刪除特性,并結(jié)合實(shí)際案例進(jìn)行演示和說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MyBatis-Plus中的邏輯刪除功能及實(shí)例

介紹:

  • 在實(shí)際開(kāi)發(fā)中,數(shù)據(jù)的刪除操作是一個(gè)常見(jiàn)需求。
  • MyBatis-Plus提供了方便且靈活的邏輯刪除功能,可以簡(jiǎn)化開(kāi)發(fā)人員在刪除數(shù)據(jù)時(shí)的操作。

案例背景

假設(shè)我們有一個(gè)博客系統(tǒng),包含Blog類作為博客實(shí)體。在這個(gè)系統(tǒng)中,我們希望能夠?qū)Σ┛瓦M(jìn)行軟刪除操作,即將要?jiǎng)h除的博客標(biāo)記為已刪除狀態(tài),而不是直接物理刪除。

通過(guò)邏輯刪除,我們可以保留刪除記錄,有助于追蹤數(shù)據(jù)變更歷史和實(shí)現(xiàn)審計(jì)需求。

使用邏輯刪除功能

配置數(shù)據(jù)庫(kù)和實(shí)體類

首先,在使用邏輯刪除功能之前,我們需要進(jìn)行相關(guān)的配置。

  1. 在數(shù)據(jù)庫(kù)表中,我們需要添加一個(gè)用于表示邏輯刪除狀態(tài)的字段。例如,我們可以添加一個(gè)名為deletedtinyint類型字段,默認(rèn)值為0。
  2. 在實(shí)體類(這里是Blog類)中,我們使用Lombok來(lái)減少getter和setter方法的編寫(xiě)工作。

以下是一個(gè)示例:

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("blog")
public class Blog {
    private Long id;
    private String title;
    private String content;
    @TableLogic
    private Integer deleted;
}

在上述示例中,我們使用@Data注解簡(jiǎn)化了getter和setter方法的編寫(xiě),并使用@TableName注解標(biāo)記了實(shí)體類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名。同時(shí),使用@TableLogic注解標(biāo)記了deleted字段為邏輯刪除字段。

執(zhí)行邏輯刪除操作

接下來(lái),我們將演示如何在MyBatis-Plus中使用邏輯刪除功能。

方式一:局部配置

局部配置適用于只需要在某個(gè)Mapper接口中應(yīng)用邏輯刪除功能的情況。

首先,在Mapper接口中添加@Repository注解并繼承BaseMapper接口,例如:

import org.springframework.stereotype.Repository;

@Repository
public interface BlogMapper extends BaseMapper<Blog> {
}

然后,在Service層的實(shí)現(xiàn)類中進(jìn)行邏輯刪除的調(diào)用:

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements BlogService {

    @Override
    public boolean deleteBlogById(Long id) {
        return baseMapper.deleteById(id) > 0;
    }
}

在上述示例中,我們直接調(diào)用baseMapper的deleteById方法進(jìn)行邏輯刪除操作。MyBatis-Plus會(huì)自動(dòng)將邏輯刪除字段設(shè)置為1(表示已刪除)。

方式二:全局配置

全局配置適用于對(duì)整個(gè)項(xiàng)目中的所有Mapper接口都應(yīng)用邏輯刪除功能的情況。

首先,在application.yml或application.properties文件中配置全局屬性:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0

然后,設(shè)置全局配置項(xiàng)并在Mapper接口中使用@TableLogic注解:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加樂(lè)觀鎖插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

在上述示例中,我們創(chuàng)建了一個(gè)@Configuration類,并注冊(cè)了Mybatis-Plus提供的分頁(yè)插件(PaginationInterceptor)和樂(lè)觀鎖插件(OptimisticLockerInnerInterceptor)。這些插件可以根據(jù)具體需求進(jìn)行配置。

測(cè)試

為了驗(yàn)證邏輯刪除功能是否正常工作,我們可以編寫(xiě)單元測(cè)試。

以下是一個(gè)簡(jiǎn)單的測(cè)試實(shí)例:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class BlogServiceTest {

    @Autowired
    private BlogService blogService;

    @Test
    public void testDeleteBlog() {
        Long blogId = 1L; // 假設(shè)要?jiǎng)h除ID為1的博客
        boolean result = blogService.deleteBlogById(blogId);
        System.out.println("Delete successful: " + result);
    }
}

在上述測(cè)試中,我們注入了BlogService接口,并調(diào)用deleteBlogById方法來(lái)執(zhí)行邏輯刪除操作。

通過(guò)編寫(xiě)和運(yùn)行這些測(cè)試用例,我們可以驗(yàn)證使用邏輯刪除功能時(shí)的正常性。

總結(jié)

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

相關(guān)文章

  • SpringBoot Freemarker基礎(chǔ)配置與使用方式

    SpringBoot Freemarker基礎(chǔ)配置與使用方式

    文章主要介紹了在Spring Boot項(xiàng)目中使用FreeMarker模板引擎的基礎(chǔ)配置、使用方法和注意事項(xiàng),包括依賴引入、配置文件設(shè)置、數(shù)據(jù)類型調(diào)用、運(yùn)算符支持、時(shí)間格式轉(zhuǎn)換、邏輯表達(dá)式等
    2026-05-05
  • Spring指定bean在哪個(gè)應(yīng)用加載(示例詳解)

    Spring指定bean在哪個(gè)應(yīng)用加載(示例詳解)

    本文通過(guò)實(shí)例代碼介紹了Spring指定bean在哪個(gè)應(yīng)用加載,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-08-08
  • IDEA2022版本創(chuàng)建maven?web項(xiàng)目的兩種方式詳解

    IDEA2022版本創(chuàng)建maven?web項(xiàng)目的兩種方式詳解

    創(chuàng)建maven?web項(xiàng)目有兩種方式,一種是使用骨架方式,一種是不使用骨架的方式,本文結(jié)合實(shí)例代碼給大家介紹了IDEA2022版本創(chuàng)建maven?web項(xiàng)目的兩種方式,需要的朋友可以參考下
    2023-02-02
  • Idea公司真牛逼發(fā)行最適合程序員編程字體

    Idea公司真牛逼發(fā)行最適合程序員編程字體

    JetBrains年初的時(shí)候推出了一種新字體,即JetBrains Mono,它是專為開(kāi)發(fā)人員設(shè)計(jì)的,非常不錯(cuò),喜歡的朋友快來(lái)體驗(yàn)吧
    2020-12-12
  • JAVA中 redisTemplate 和 jedis的配合使用操作

    JAVA中 redisTemplate 和 jedis的配合使用操作

    這篇文章主要介紹了JAVA中 redisTemplate 和 jedis的配合使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • SpringBoot中利用AOP和攔截器實(shí)現(xiàn)自定義注解

    SpringBoot中利用AOP和攔截器實(shí)現(xiàn)自定義注解

    本文將通過(guò)攔截器+AOP實(shí)現(xiàn)自定義注解,在這里攔截器充當(dāng)在指定注解處要執(zhí)行的方法,aop負(fù)責(zé)將攔截器的方法和要注解生效的地方做一個(gè)織入,感興趣的可以嘗試一下
    2022-06-06
  • Spring對(duì)靜態(tài)變量無(wú)法注入的解決方案

    Spring對(duì)靜態(tài)變量無(wú)法注入的解決方案

    這篇文章主要介紹了使用Spring對(duì)靜態(tài)變量無(wú)法注入的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-07-07
  • 關(guān)于SpringBoot微服務(wù)發(fā)布與部署的三種方式

    關(guān)于SpringBoot微服務(wù)發(fā)布與部署的三種方式

    SpringBoot 框架只提供了一套基于可執(zhí)行 jar 包(executable jar)格式的標(biāo)準(zhǔn)發(fā)布形式,但并沒(méi)有對(duì)部署做過(guò)多的界定,而且為了簡(jiǎn)化可執(zhí)行 jar 包的生成,SpringBoot 提供了相應(yīng)的 Maven 項(xiàng)目插件,需要的朋友可以參考下
    2023-05-05
  • Python單元測(cè)試_使用裝飾器實(shí)現(xiàn)測(cè)試跳過(guò)和預(yù)期故障的方法

    Python單元測(cè)試_使用裝飾器實(shí)現(xiàn)測(cè)試跳過(guò)和預(yù)期故障的方法

    下面小編就為大家?guī)?lái)一篇Python單元測(cè)試_使用裝飾器實(shí)現(xiàn)測(cè)試跳過(guò)和預(yù)期故障的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • GitLab在IDEA中回滾主分支問(wèn)題

    GitLab在IDEA中回滾主分支問(wèn)題

    這是工作中遇到的問(wèn)題,記錄下來(lái),也方便自己后面查看操作步驟,也方便各位遇到這個(gè)問(wèn)題,不至于卡太久,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

重庆市| 安溪县| 康乐县| 新晃| 宕昌县| 时尚| 阳高县| 绥化市| 东阳市| 颍上县| 虹口区| 江永县| 红河县| 甘肃省| 武陟县| 北流市| 水城县| 定边县| 白水县| 荔浦县| 武隆县| 措勤县| 通河县| 白银市| 澄城县| 博湖县| 高雄市| 康马县| 易门县| 渭源县| 呈贡县| 吴忠市| 绍兴县| 杭锦后旗| 西昌市| 沾化县| 来宾市| 孟州市| 华池县| 祁东县| 聂拉木县|