MyBatis-Plus中的逻辑删除使用详解

作者:心态还需努力呀 时间:2022-12-29 15:07:40 

前言

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非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;

添加后的效果图展示:

MyBatis-Plus中的逻辑删除使用详解

二、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。如下如图所示。

MyBatis-Plus中的逻辑删除使用详解

3. 通过查询输出的结果可发现查不到id为12的数据。如下图所示:

MyBatis-Plus中的逻辑删除使用详解

 4. 我们从数据库中查看数据表的信息,会发现id为12的数据deleted字段已经被标记为1。所以不会查询到,但本身的数据没有真正的被删除(还存在数据库中)。

MyBatis-Plus中的逻辑删除使用详解

来源:https://blog.csdn.net/weixin_52258054/article/details/128279752

标签:MyBatis-Plus,逻辑删除
0
投稿

猜你喜欢

  • java 获取当前路径下的所有xml文档的方法

    2021-08-08 13:54:29
  • Java 字符串反转实现代码

    2023-01-09 10:04:52
  • 详解Android应用中ListView列表选项栏的编写方法

    2023-09-03 15:01:25
  • 前端如何调用后端接口进行数据交互详解(axios和SpringBoot)

    2023-10-17 02:48:43
  • Android音乐播放器制作 加入控制台(三)

    2022-04-15 05:09:30
  • Android类FileDownloadList分析

    2022-06-17 02:11:36
  • Java基础之创建虚拟机对象的过程详细总结

    2022-07-07 14:24:29
  • 一篇文章带你深入了解Java封装

    2023-11-20 00:37:45
  • SpringBoot工程搭建打包、启动jar包和war包的教程图文详解

    2022-05-04 22:09:10
  • 基于SpringBoot实现图片上传及图片回显

    2023-01-17 06:26:15
  • C#实现文本转语音功能

    2021-07-07 20:20:54
  • spring入门教程之bean的继承与自动装配详解

    2023-11-10 14:46:23
  • 关于C#泛型列表List<T>的基本用法总结

    2022-10-08 16:43:40
  • Java实现Excel文件转PDF(无水印无限制)

    2023-10-28 11:33:18
  • 将本地的jar包打到Maven的仓库中实例

    2022-08-29 13:38:28
  • 宝塔面板配置及部署javaweb教程(全网最全)

    2023-11-10 15:26:27
  • 基于Spring-Security自定义登陆错误提示信息

    2021-09-20 17:33:40
  • springboot下ueditor上传功能的实现及遇到的问题

    2023-09-22 05:46:21
  • 浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并

    2023-11-20 09:26:40
  • SpringBoot 整合 ElasticSearch操作各种高级查询搜索

    2023-03-25 17:12:40
  • asp之家 软件编程 m.aspxhome.com