Mybatis plus中的逻辑删除

Mybatis plus中的逻辑删除


首先对比两个概念,物理删除逻辑删除

物理删除:物理删除就是将数据真正的从数据库中抹除了。(我用了抹除,而没用删除,大家可以自行想象一下这种对数据的删除程度)

逻辑删除:本质上是一个修改操作,并不从数据库中将数据抹除。数据还存在于表中,但是查不出来。

实际上在现实生活中,逻辑删除用的最多。比如你想删除一个数据,如果真的从物理层面删除它,那数据就真的没了。如果你想恢复,那就变得很复杂了。

举个例子,淘宝中有个商家因为特殊原因暂时停止出售其中某一件商品,因此就需要删除它,防止将其查询出来。但是商家又不想彻底抹除数据,这时候该怎么办?这时考虑我们的逻辑删除

还有我们电脑的回收站,大家是不是可以轻轻松松的将最近删除的东西还原回去!

还有我们wps的文档,也是可以恢复的。我认为凡是轻松恢复的都是逻辑删除


Mybatis plus中的逻辑删除实现步骤

  1. 在表中添加一个字段,用来区分是否已经删除
  2. 在实体类中添加属性。
  3. 为属性添加注解
  4. 添加配置类(选)
  5. 添加默认配置(选)

详解

1、在表中添加字段

这里我添加了一个delete_flag字段,并且设置它的默认值为0。
在这里插入图片描述

2、在实体类中添加属性。
private Integer delete_flag; // 逻辑删除

3、为属性添加注解。
@TableLogic
    private Integer delete_flag; // 逻辑删除
4、添加配置类(选)

这里好像是3.0以上就不用添加此配置信息了,因此大家可以看一下自己的Mybatis plus版本,如果是3.0以上,就不用添加。否则还是需要添加的。我这里的版本是3.2

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

如果你们是3.0以下,需要在配置类中添加如下代码。

// 逻辑删除的插件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }
5. 添加默认配置(选)

添加默认配置信息,这里配置未删除时的值是0,删除之后的值是1。(默认就是这个配置,可以不用添加。)

但是如果我们要用文字的形式,则可以在这里设置。比如选择“未删除”“已删除”这样的表示方法。

global-config:
	logic-delete-value: 1 # 逻辑已删除值(默认为 1)
    logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

实践

1、插入数据

我们先在数据库中插入一条数据,可以看出它的delete_flag值为0。

@Test
    void addUserWithTime(){
        Date date = new Date();
        User user = new User();
        user.setUsername("test_delete_flag");
        user.setAvatar("/test_delete_flag");
        user.setPassword("delete_flag");
        user.setEmail("163.com");
        user.setStatus(0);
        int insert = userMapper.insert(user);
        System.out.println("insert的值是:"+insert);
    }

在这里插入图片描述

2、删除数据

我们根据id删除刚刚插入的第10条数据

@Test
    void testDelete(){
        int result = userMapper.deleteById(10);
        System.out.println(result);
    }

可以看到,我们执行了delete操作,但是并没有从数据库中将它删除,而是将delete_flag的值由0变为1。
在这里插入图片描述


我们可以看一下控制台打印的sql执行操作,也可以看出它并不是执行的delete操作,而是update操作。
在这里插入图片描述


总结

1、首先介绍了什么是物理删除和逻辑删除。

2、接着介绍了Mybatis中使用逻辑删除的步骤。

3、最后演示了具体的操作流程和操作结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值