MyBatis-Plus中的逻辑删除使用详解
作者:心态还需努力呀 发布时间:2022-12-29 15:07:40
标签:MyBatis-Plus,逻辑删除
前言
开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除。
MP就提供了这样的功能,方便我们使用,接下来我们一起学习下~
一、修改表结构
为user表增加deleted字段,用于表示数据是否被删除,1代表删除,0代表未删除。sql代码如下
USE study;
ALTER TABLE user
ADD COLUMN deleted int(1) NULL DEFAULT 0 COMMENT '1代表删除,0代表未删除' AFTER user_status;
添加后的效果图展示:
二、User实体中添加属性
增加deleted属性并且添加@TableLogic注解
//标记字段
@TableLogic
private Integer deleted;
三、配置
在application.properties下配置删除字段的标记,默认就是删除为1,未删除就为0。这个具体值大家可以修改,按开发要求即可。要是就是用默认值的话其实不配置下面的代码也可以执行的。
#删除标记为1
mybatis-plus.global-config.db-config.logic-delete-value=1
#未删除标记为0
mybatis-plus.global-config.db-config.logic-not-delete-value=0
四、测试
编写测试类,在测试类下编写testDeleteById方法,删除id为12的用户信息。删除成功后查询表中的数据查看是否能查询到id为12的结果。
/**
* 删除操作
* */
//根据id删除
//int deleteById(Serializable id);
@Test
public void testDeleteById() {
int result = this.userMapper.deleteById(12);
if(result>0){
testSelectList();
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}
效果图:
1. 查看日志会发现,第一个删除生成的sql代码其实是修改,只是将deleted字段等于0的条件下设置了deleted字段标记为1。
2. 查看日志,第二个查询的结果自动生成的sql代码中也自动添加了条件为deleted字段等于0。如下如图所示。
3. 通过查询输出的结果可发现查不到id为12的数据。如下图所示:
4. 我们从数据库中查看数据表的信息,会发现id为12的数据deleted字段已经被标记为1。所以不会查询到,但本身的数据没有真正的被删除(还存在数据库中)。
来源:https://blog.csdn.net/weixin_52258054/article/details/128279752


猜你喜欢
- 0x00:文件介绍在 WEB 工程中,对于 MyBatis 最核心的全局配置文件是 SqlMapConfig.xml 文件,其中包含了数据库
- Android使用GridView实现日历功能示例,代码有点多,发个图先:如果懒得往下看的,可以直接下载源码吧,最近一直有人要,由于时间太久
- 页面:上传文件时的关键词:enctype="multipart/form-data"<%@ page langua
- 概述最近在对之前写的一个 Spring Boot 的视频网站项目做功能完善,需要利用 FFmpeg 实现读取视频信息和自动截图的功能,查阅资
- 1.垃圾收集算法的核心思想Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内
- 前言大家都知道在Java中,除了8种基本数据类型外,其他的都是引用类型。使用引用类型是为了更好地贯彻面向对象的思想,那为什么还要保留8种基本
- 一、前期准备1、申请好微信商户号appid,拿到商户id和商户秘钥,退款的话需要商户证书2、申请好支付宝商户号appid,商户公钥和秘钥(需
- 在学习和回顾该知识前,已经掌握了if语句的结构和用法。if (条件) 语句;当条件满足的情况下,if结构
- 自定义控件的步骤:1 View的工作原理2 编写View类3 为View类增加属性4 绘制屏幕5 响应用户消息6 自定义回调函数java代码
- 上篇文章给大家介绍了浅析C# 中的类型系统(值类型和引用类型),接下来通过本文给大家介绍下c# 泛型类型,说下C#中的泛型,熟练地使用泛型能
- 这篇文章主要介绍了如何通过Java实现时间轴过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 在编写程序,我们经常会对一些时间进行比较,比如要搜寻一个时间范围中的数据,需要用户输入开始时间和结束时间,如果结束时间小于或等于开始时间,那
- 本文主要实现功能,可能有不合理的地方首先创建一个实现功能的工具里,直接上代码:import android.content.Context;
- 今天被数据大神说了,对接第三方接口返回的json字段我想用驼峰形式,他说我这样不专业。所以就改了,认怂。记住以后再次对接rest接口,返回的
- 应用启动的时候有短暂的白屏,如图:可以通过设置theme的方式来解决 <style name="AppTheme"
- 一、总体概述官方文档:https://docs.devexpress.com/WindowsForms/8117/controls-and-
- SpringDataJpa创建中间表//fetch=FetchType.EAGER 关闭懒加载 相当于hibernate中的lazy=fal
- @WebFilter注解过滤器@WebFilter加在过滤器的注解上使用import lombok.extern.slf4j.Slf4j;i
- 一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言。当子类和父类存在同一个方法,子类重写了父类的方
- 如下所示:public static String reThreeStr(String ss){boolean result= ss.mat