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

 更新时间:2022年12月12日 10:11:52   作者:心态还需努力呀  
开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除

前言

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非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。所以不会查询到,但本身的数据没有真正的被删除(还存在数据库中)。

总结

在实际的开发中也是这样的,当用户点完删除数据信息后以为删除掉了,但实际上没你们想的那么简单。你的数据在数据库中不会轻易的删除掉的。只是不会显示在用户页面而已。大多数的开发其实都是这样,所以说该知识点也是很重要的。MP简化了我们的开发,的确可以体会到~

这就是逻辑删除的用法。做一个项目练练手就会了,相对而言比较好掌握。大家加油学起来~

到此这篇关于MyBatis-Plus中的逻辑删除使用的文章就介绍到这了,更多相关MyBatis-Plus逻辑删除使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中枚举的实现原理介绍

    Java中枚举的实现原理介绍

    大家好,本篇文章主要讲的是Java中枚举的实现原理介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • SpringMVC生成的验证码图片不显示问题及解决方法

    SpringMVC生成的验证码图片不显示问题及解决方法

    这篇文章主要介绍了SpringMVC生成的验证码图片不显示问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 一篇文章带你深入了解Java线程池

    一篇文章带你深入了解Java线程池

    这篇文章主要介绍了Java 线程池的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • Java适配器模式的实现及应用场景

    Java适配器模式的实现及应用场景

    适配器模式是Java中一种常用的设计模式,它通过将一个类的接口转换成客户端所期望的另一种接口来实现不同接口之间的兼容性。适配器模式主要应用于系统的接口不兼容、需要扩展接口功能以及需要适应不同环境的场景
    2023-04-04
  • MyBatis-Plus结合Layui实现分页方法

    MyBatis-Plus结合Layui实现分页方法

    MyBatis-Plus 使用简单,本文主要介绍使用 service 中的 page 方法结合 Layui 前端框架实现分页效果,具有一定的参考价值,感兴趣的可以了解一下
    2021-08-08
  • Spring Security权限管理实现接口动态权限控制

    Spring Security权限管理实现接口动态权限控制

    这篇文章主要为大家介绍了Spring Security权限管理实现接口动态权限控制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Java计算几何图形面积的实例代码

    Java计算几何图形面积的实例代码

    这篇文章主要介绍了Java计算几何图形面积的实例代码,需要的朋友可以参考下
    2014-03-03
  • 使用Spring Cache时设置缓存键的注意事项详解

    使用Spring Cache时设置缓存键的注意事项详解

    在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​@CachePut​​、​​@CacheEvict​​等注解可以方便地实现缓存功能,本文给大家介绍了使用Spring Cache时设置缓存键的注意事项
    2025-01-01
  • 超详细解析Spring Bean的创建过程

    超详细解析Spring Bean的创建过程

    这篇文章主要揭秘了Spring Bean的创建过程,文中通过代码示例和图文结合的方式解析的超级详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • Springboot的@Cacheable注解使用方法

    Springboot的@Cacheable注解使用方法

    @Cacheable 是 Spring 框架提供的一种基于缓存的注解,它可以被应用在方法上以指示该方法的结果需要被缓存起来,缓存在哪个 Cache 中以及该方法使用何种缓存键,以下代码展示了如何使用 @Cacheable 注解,感兴趣的朋友跟随小编一起看看吧
    2024-04-04

最新评论