【MyBatis Plus 逻辑删除详解】

文章目录

  • [MyBatis Plus 逻辑删除详解](#MyBatis Plus 逻辑删除详解)
    • 前言
    • 什么是逻辑删除?
    • [MyBatis Plus 中的逻辑删除](#MyBatis Plus 中的逻辑删除)
      • [1. 添加逻辑删除字段](#1. 添加逻辑删除字段)
      • [2. 实体类的配置](#2. 实体类的配置)
      • [3. 配置 MyBatis Plus](#3. 配置 MyBatis Plus)
      • [4. 使用逻辑删除](#4. 使用逻辑删除)
      • [5. 查询逻辑删除的记录](#5. 查询逻辑删除的记录)

MyBatis Plus 逻辑删除详解

前言

MyBatis Plus 是一个强大的持久化框架,它在基于 MyBatis 的基础上提供了更多便捷的功能,其中之一就是逻辑删除。逻辑删除是一种常见的数据处理方式,它允许你在不实际删除数据库记录的情况下,标记记录为已删除状态。

什么是逻辑删除?

逻辑删除,也称为软删除,是一种常见的数据管理方法。它通过在数据库表中添加一个用于标识记录状态的字段(通常是一个布尔值或枚举值),来代替物理删除记录。这样做的好处是可以保留被删除记录的历史信息,同时避免了实际删除记录可能引发的数据丢失问题。

MyBatis Plus 中的逻辑删除

MyBatis Plus 提供了逻辑删除的内置支持。下面是如何在 MyBatis Plus 中启用逻辑删除功能的步骤。

1. 添加逻辑删除字段

首先,在数据表中添加一个用于标识记录状态的字段。这个字段通常是一个整数或枚举类型,表示记录的状态,例如 0 表示正常,1 表示删除。假设我们的表中有一个 status 字段用于表示记录状态。

2. 实体类的配置

在实体类中需要使用 MyBatis Plus 的 @TableLogic 注解来标记逻辑删除字段。标识 MyBatis Plus 哪个字段用于逻辑删除。

java 复制代码
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("your_table_name")
public class YourEntity {
    // 其他字段...
    
    @TableLogic
    private Integer status;
}

3. 配置 MyBatis Plus

在 MyBatis Plus 的配置文件中,需要启用逻辑删除的功能。通过在配置文件中添加如下配置来实现:

xml 复制代码
<configuration>
    <!-- 其他配置 -->
    
    <global-config>
        <db-config>
            <!-- 其他配置 -->
            <logic-delete-value>1</logic-delete-value>
            <logic-not-delete-value>0</logic-not-delete-value>
        </db-config>
    </global-config>
</configuration>

上述配置表示 MyBatis Plus 使用 1 来表示已删除状态,使用 0 来表示未删除状态。

4. 使用逻辑删除

执行删除操作时,MyBatis Plus 会自动将逻辑删除字段更新为已删除状态,而不是实际从数据库中删除记录。例如:

java 复制代码
yourEntityMapper.deleteById(id);

这会更新 status 字段为 1,表示已删除。

5. 查询逻辑删除的记录

要查询逻辑删除的记录,可以使用 MyBatis Plus 的 select 方法,并指定查询条件,例如:

java 复制代码
List<YourEntity> deletedRecords = yourEntityMapper.selectList(Wrappers.<YourEntity>lambdaQuery()
    .eq(YourEntity::getStatus, 1));

这将返回所有 status1 的记录,即已删除记录。

相关推荐
麦聪聊数据10 小时前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_10 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡10 小时前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧11 小时前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon11 小时前
SQL学习指南——视图
数据库·sql
活宝小娜11 小时前
mysql详细安装教程
数据库·mysql·adb
贤时间11 小时前
codex 助力oracle ebs 开发
数据库·oracle
秉承初心11 小时前
PostgreSQL 数据性能瓶颈突破实战
数据库·postgresql·oracle
Database_Cool_12 小时前
即席查询(Ad-Hoc)数据库选型:AnalyticDB MySQL 秒级 Ad-Hoc 分析方案
数据库·mysql