【MyBatis Plus 逻辑删除详解】

news/2025/3/15 6:09:33/

文章目录

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

MyBatis Plus 逻辑删除详解

前言

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

什么是逻辑删除?

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

MyBatis Plus 中的逻辑删除

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

1. 添加逻辑删除字段

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

2. 实体类的配置

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

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("your_table_name")
public class YourEntity {// 其他字段...@TableLogicprivate Integer status;
}

3. 配置 MyBatis Plus

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

<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 会自动将逻辑删除字段更新为已删除状态,而不是实际从数据库中删除记录。例如:

yourEntityMapper.deleteById(id);

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

5. 查询逻辑删除的记录

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

List<YourEntity> deletedRecords = yourEntityMapper.selectList(Wrappers.<YourEntity>lambdaQuery().eq(YourEntity::getStatus, 1));

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


http://www.ppmy.cn/news/1579243.html

相关文章

现代密码学 | 具有完整性功能的安全方案

1.案例背景 1.1邮箱遭黑客入侵&#xff0c;一公司差点损失1500万 事件描述&#xff1a; 近日&#xff0c;杭州钱塘区公安分局前进派出所接辖区某公司报案称&#xff0c;公司邮箱遭黑客非法入侵恶意篡改信息&#xff0c;其国外客户被欺骗后&#xff0c;将650余万元&#xff08…

使用vite脚手架搭建react项目

首选使用npm安装react vite npm install -g create vite 替换npm install -g create-react-app 新的脚手架据说很快&#xff0c;是原来的webpack的700倍。。。 安装完vite后&#xff0c;使用npm create vite my-react-app (my-react-app 这是我自己的项目名&#xff0c;你自己可…

Manus(一种AI代理或自动化工具)与DeepSeek(一种强大的语言模型或AI能力)结合使用任务自动化和智能决策

一、Manus与DeepSeek差异 十分好奇DeepSeek和Manus究竟谁更厉害些&#xff0c;DeepSeek是知识型大脑&#xff0c;Manus则是全能型执行者。即DeepSeek专注于语言处理、知识整合与专业文本生成。其核心优势在于海量参数支持的深度学习和知识推理能力&#xff0c;例如撰写论文、润…

css的显示模式

CSS的显示模式&#xff1a; html中一共有三种显示模式 1. 块级元素&#xff1a;独占一行&#xff0c;默认宽度为父元素的100%,可以设置宽高 例如div,p,ul,ol,li,h1-h6 2、行内元素&#xff1a;不独占一行&#xff0c;默认宽度为内容的宽度&#xff0c;不能设置宽高 例如span,a…

【Python办公自动化】—Excel中相同编号自动添加-1-2-3...

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——> 一晌小贪欢的博客主页求关注 &…

python如何获取三个小时之前的时间并输出

python获取三个小时之前的时间的方法&#xff1a; 1、使用“import datetime”导入datetime包 2、用“now()”函数得到的当前时间减去三个小时&#xff0c;输出这个结果就可以了 执行结果如下&#xff1a;

绿色高效运维:分布式光伏监控系统的全生命周期管理

一 碳中和分布式光伏监控系统-概述 碳中和分布式光伏监控系统是针对分散式光伏发电单元&#xff08;如屋顶光伏、工商业光伏、村级电站等&#xff09;进行集中化、智能化管理的技术平台&#xff0c;其核心目标是通过实时监测、数据分析与远程控制&#xff0c;实现发电效率大化…

【day13】营销系统:优惠券核销流程

营销系统&#xff1a;优惠券核销流程设计 优惠券核销是营销系统中的核心功能之一&#xff0c;涉及用户使用优惠券、系统验证优惠券有效性、更新优惠券状态等步骤。以下是优惠券核销的详细流程设计&#xff1a; 1. 核销流程概述 用户提交核销请求&#xff1a;用户在支付或结算…