【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 的记录,即已删除记录。

相关推荐
小光学长7 分钟前
基于微信小程序的家具商城系统g80l9675(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·微信小程序·小程序
j***827027 分钟前
Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
数据库·sql·mybatis
g***267928 分钟前
5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库
数据库·postgresql
P***843935 分钟前
【MySQL】C# 连接MySQL
数据库·mysql·c#
8***f39535 分钟前
SQL中的REGEXP正则表达式使用指南
数据库·sql·正则表达式
o***741739 分钟前
MySQL root用户密码忘记怎么办(Reset root account password)
数据库·mysql·adb
M***Z21041 分钟前
【SQL技术】不同数据库引擎 SQL 优化方案剖析
数据库·sql
l***21781 小时前
MySQL--》理解锁机制中的并发控制与优化策略
数据库·mysql·oracle
chenyuhao20241 小时前
MySQL索引特性
开发语言·数据库·c++·后端·mysql
5***r9351 小时前
SQL实现md5加密方法
数据库·sql