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
0
投稿
猜你喜欢
- 在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 S
- 1.OkHttp发起网络请求可以通过OkHttpClient发起一个网络请求//创建一个Client,相当于打开一个浏览器 OkHttpCl
- maven scope provided和runtime例子maven常用的scope有compile,provided,runtime,t
- 因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表并且可根据提供的模板S
- 测试spring cloud 使用consul注册服务的时候,出现critical,如下:怎么解决这个问题,现在只能看到health che
- 前言接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日
- 前言使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat。现在需要将项目打包,并部署到
- 你以前听到的谈论关于Java8的所有都是围绕lambda表达式. 但它仅仅是Java8的一部分. Java 8 有许多新特性—一些强大的新类
- 判断一个数是不是回文数示例,回文数就是原数与其倒置后的数相等,如:123321,到之后仍为123321,即为回文数题目:一个5位数,判断它是
- 在开发中,遇到了sql语句报错,但是并没有回滚的情况。经过几天的排查,终于找到了事务没有回滚的原因。原来的项目用的是informix的数据库
- 什么是异步调用?异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等
- C#将DLL打包到程序中有时候我们的程序中包含一些添加的DLL文件,使用起来不方便,我们可以把这些DLL文件打包到程序集中,只剩下一个EXE
- 本文实例讲述了C#封装的常用文件操作类。分享给大家供大家参考。具体如下:这个C#类封装了我们经常能用到的文件操作方法,包括读写文件、获取文件
- 前言Stream是一个来自数据源的元素队列并支持聚合操作,其中具有以下特性:Stream只负责计算,不存储任何元素,元素是特定类型的对象,形
- 官网教程一、翻转(镜像)头文件 quick_opencv.h:声明类与公共函数#pragma once#include <opencv
- 目录不含return的执行顺序finally子句含return的执行顺序返回类型是对象类型时值的变化结论不含return的执行顺序执行顺序为
- java Long类型转为String类型1、Long.ValueOf("String")返回Long包装类型数据包装类
- 目录1.前言2.不同进制的特点3.进制之间的转换3.1 二进制转十进制:3.2 十进制转二进制:3.3 二进制转八进制:3.4 十六进制转二
- 本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。1. 什么
- 性能优化点:1.使用int不使用double。(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点