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

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

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

MyBatis-Plus中的邏輯刪除功能及實例

介紹:

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

案例背景

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

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

使用邏輯刪除功能

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

首先,在使用邏輯刪除功能之前,我們需要進行相關的配置。

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

以下是一個示例:

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注解簡化了getter和setter方法的編寫,并使用@TableName注解標記了實體類對應的數(shù)據(jù)庫表名。同時,使用@TableLogic注解標記了deleted字段為邏輯刪除字段。

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

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

方式一:局部配置

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

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

import org.springframework.stereotype.Repository;

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

然后,在Service層的實現(xià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方法進行邏輯刪除操作。MyBatis-Plus會自動將邏輯刪除字段設置為1(表示已刪除)。

方式二:全局配置

全局配置適用于對整個項目中的所有Mapper接口都應用邏輯刪除功能的情況。

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

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

然后,設置全局配置項并在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();
        // 添加樂觀鎖插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }

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

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

測試

為了驗證邏輯刪除功能是否正常工作,我們可以編寫單元測試。

以下是一個簡單的測試實例:

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; // 假設要刪除ID為1的博客
        boolean result = blogService.deleteBlogById(blogId);
        System.out.println("Delete successful: " + result);
    }
}

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

通過編寫和運行這些測試用例,我們可以驗證使用邏輯刪除功能時的正常性。

總結(jié)

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

相關文章

  • java 頁面url傳值中文亂碼的解決方法

    java 頁面url傳值中文亂碼的解決方法

    本節(jié)講的是ajax 的URL參數(shù)中有中文值,傳到服務端,在用request.getParameter()方法,得到的常常會是亂碼。
    2013-03-03
  • Java后臺批量生產(chǎn)echarts圖表并保存圖片

    Java后臺批量生產(chǎn)echarts圖表并保存圖片

    這篇文章主要介紹了Java后臺批量生產(chǎn)echarts圖表并保存圖片,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 一起學JAVA基礎之運算符

    一起學JAVA基礎之運算符

    計算機的最基本用途之一就是執(zhí)行數(shù)學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量,下面這篇文章主要給大家介紹了關于JAVA基礎之運算符的相關資料,需要的朋友可以參考下
    2022-01-01
  • java的泛型你真的了解嗎

    java的泛型你真的了解嗎

    這篇文章主要為大家詳細介紹了java的泛型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 淺談java中Math.random()與java.util.random()的區(qū)別

    淺談java中Math.random()與java.util.random()的區(qū)別

    下面小編就為大家?guī)硪黄獪\談java中Math.random()與java.util.random()的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java數(shù)據(jù)庫連接池之c3p0簡介_動力節(jié)點Java學院整理

    Java數(shù)據(jù)庫連接池之c3p0簡介_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Java數(shù)據(jù)庫連接池之c3p0簡介的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java代碼注釋規(guī)范(動力節(jié)點整理)

    Java代碼注釋規(guī)范(動力節(jié)點整理)

    代碼注釋是架起程序設計者與程序閱讀者之間的通信橋梁,最大限度的提高團隊開發(fā)合作效率。也是程序代碼可維護性的重要環(huán)節(jié)之一。下面通過本文說一下我們在日常開發(fā)中使用的代碼注釋規(guī)范
    2017-03-03
  • java中javamail收發(fā)郵件實現(xiàn)方法

    java中javamail收發(fā)郵件實現(xiàn)方法

    這篇文章主要為大家詳細介紹了java中javamail收發(fā)郵件實現(xiàn)方法,實例分析了javamail的使用方法與相關注意事項,非常具有實用價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Spring Boot Web應用開發(fā) CORS 跨域請求支持

    Spring Boot Web應用開發(fā) CORS 跨域請求支持

    本篇文章主要介紹了Spring Boot Web應用開發(fā) CORS 跨域請求支持,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot自定義Redis實現(xiàn)緩存序列化詳解

    SpringBoot自定義Redis實現(xiàn)緩存序列化詳解

    Spring提供了一個RedisTemplate來進行對Redis的操作,但是RedisTemplate默認配置的是使用Java本機序列化。如果要對對象操作,就不是那么的方便。所以本文為大家介紹了另一種SpringBoot結(jié)合Redis實現(xiàn)序列化的方法,需要的可以參考一下
    2022-07-07

最新評論