【MyBatis Plus 逻辑删除详解】

文章目录

  • 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.pswp.cn/diannao/73607.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/73607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数(1)用 excel 计算鸡兔同笼

线性代数excel计算鸡兔同笼 案例&#xff1a;鸡兔同笼问题的三种解法&#xff08;递进式教学&#xff09;一、问题描述二、方程式解法&#xff08;基础版&#xff09;步骤解析 三、线性代数解法&#xff08;进阶版&#xff09;1. 方程组转化为矩阵形式2. 矩阵求解&#xff08;逆…

Flask中使用WTForms处理表单验证

在 Flask 中&#xff0c;WTForms 是一个用于 处理表单验证 的库&#xff0c;可以与 Flask 结合&#xff0c;提供表单验证、数据清理、错误提示等功能。 1. 安装 Flask-WTF 首先安装 Flask-WTF&#xff1a; pip install Flask-WTFFlask-WTF 是 WTForms 的 Flask 扩展&#xff…

24.策略模式实现日志

日志的介绍 计算机中的日志是记录系统和软件运行中发送事件的文件&#xff0c;主要作用是监控运行状态、记录异常信息&#xff0c;帮助快速定位问题并支持程序员进行问题修复。它是系统维护、故障排查和安全管理的重要工具。 日志格式以下几个指标是必须得有的&#xff1a; •…

【网络】简单的 Web 服务器架构解析,包含多个服务和反向代理的配置,及非反向代理配置

这张图片描述了一个简单的 Web 服务器架构&#xff0c;包含多个服务和反向代理的配置。以下是对每个部分的详细解释&#xff0c;帮助你理解其中的技术内容&#xff1a; 1. Web Server: ifn666.com 这是你的主域名&#xff08;ifn666.com&#xff09;&#xff0c;所有服务都通过…

​​​​​​​大语言模型安全风险分析及相关解决方案

大语言模型的安全风险可以从多个维度进行分类。 从输入输出的角度来看,存在提示注入、不安全输出处理、恶意内容生成和幻觉错误等风险; 从数据层面来看,训练数据中毒、敏感信息泄露和模型反演攻击是主要威胁; 模型自身则面临拒绝服务和盗窃的风险; 供应链和插件的不安全引…

贪心算法——c#

贪心算法通俗解释 贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优&#xff0c;而是通过局部最优的累积来逼近最终解。优点是简单高效&#xff0c;缺点是可能无法得到全局最优解。 一句话秒懂 自动售货机找零钱&#xff1a;用最少数量的…

STM32 - 在机器人领域,LL库相比HAL优势明显

在机器人控制器、电机控制器等领域的开发&#xff0c;需要高实时性、精细化控制或者对代码执行效率、占用空间有较高要求。所以&#xff0c;大家常用的HAL库明显不符合要求。再加上&#xff0c;我们学习一门技术&#xff0c;一定要学会掌握底层的原理。MCU开发的底层就是寄存器…

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…

deepseek GRPO算法保姆级讲解(数学原理+源码解析+案例实战)

文章目录 什么是GRPO群组形成(Group Formation):让大模型创建多种解决方案偏好学习(Preference Learning)&#xff1a;让大模型理解何为好的解答组内相对优势 优化(optimization): 让大模型从经验中学习(learning from experience)目标函数 GRPO算法的伪码表示GRPO算法的局限与…

使用 WebP 优化 GPU 纹理占用

WebP 格式相比 JPEG / PNG 文件更小&#xff0c;可以 减少 GPU 纹理内存占用&#xff0c;提高 WebGL / Three.js / 3D 渲染 的性能。 &#x1f539; 为什么 WebP 能减少 GPU 内存占用&#xff1f; 文件更小 → WebP 比 JPG/PNG 压缩率更高&#xff0c;减少 纹理上传 带宽&…

Google Cloud Run 如何实现无服务器(Serverless)部署?

DDoS&#xff08;分布式拒绝服务&#xff09;攻击是黑客常用的一种手段&#xff0c;通过大量恶意流量冲击服务器&#xff0c;导致网站无法访问。针对这种威胁&#xff0c;Cloudflare提供了一整套防护措施&#xff0c;包括流量过滤、速率限制、防火墙规则等&#xff0c;使网站能…

QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)

最近低代码开发火得不行&#xff0c;尤其是能把数据库秒变API的工具&#xff0c;简直是开发者的救星。今天咱就聊聊两款国内玩家&#xff1a;QuickAPI&#xff08;麦聪软件搞出来的低代码神器&#xff09;和 DBAPI&#xff08;开源社区的硬核作品&#xff09;。这两货都能靠SQL…

BigEvent项目后端学习笔记(一)用户管理模块 | 注册登录与用户信息全流程解析(含优化)

&#x1f4d6; 模块概述 用户管理模块是系统的核心基础模块&#xff0c;包含 注册、登录、用户信息维护 等功能。本模块涉及 JWT Token认证、密码加密存储、文件上传 等关键技术点&#xff0c;是理解前后端分离架构中安全与数据交互的典型实践。本篇对于原项目进行了代码优化&…

c#:使用串口通讯实现数据的发送和接收

串口通讯&#xff08;Serial Communication&#xff09;是一种常见的硬件设备与计算机之间的数据传输方式&#xff0c;广泛应用于工业控制、嵌入式系统、传感器数据采集等领域。本文将详细介绍如何使用C#实现基于串口通讯的数据发送和接收&#xff0c;并结合代码示例解析其实现…

k8s面经

最近面了几场&#xff0c;k8s技能几乎成了运维的必备品了。 容器一直pending可能的原因调度问题。容器的调度策略&#xff0c;比如标签选择、容忍度或者亲和度&#xff0c;导致没有合适的节点可供调度 资源问题&#xff0c;比如宿主机的CPU内存磁盘不足&#xff0c;或者要挂载…

网络通信(传输层协议:TCP/IP ,UDP):

Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。 网络协议&#xff1a;一台电脑的数据怎么传递给另一台电脑&#xff0c;是由网络协议来规定的 端口号&#…

DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)

&#x1f31f;引言&#xff1a; DeepSeek作为国产AI大模型&#xff0c;以强大的逻辑推理和结构化内容生成能力著称&#xff0c;擅长根据用户需求生成PPT大纲或Markdown文本&#xff1b;Kimi的PPT助手则能解析结构化内容并套用模板快速生成美观的PPT&#xff0c;两者结合实现“内…

卷积神经网络(知识点)

一、为了使特征图变小&#xff1a; 由两种方法&#xff1a;1.增大步长&#xff1a;卷积的时候不是一次一步&#xff0c;而是一次多步&#xff0c;类似一张图片&#xff0c;在原来的像素基础上&#xff0c;每隔一个取一个像素点。 其中S就是步长 注意&#xff1a;扩大步长不经…

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分&#xff08;2018年-2023年&#xff09;的易错题及相应的知识点整理&#xff0c;后期复习也常常用到&#xff0c;对于知识提炼归纳理解起到了很大的作用&#xff0c;分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…

std::invoke详解

基础介绍 c17版本引入了std::invoke特性&#xff0c;这是一个通用的调用包装器&#xff0c;可以统一调用&#xff1a; 普通函数成员函数函数对象Lambda表达式指向成员的指针 它的主要作用是提供一个统一的方式来调用各种可调用对象。 std::invoke依赖的头文件&#xff1a;#…