本节案例承接上节案例

1. 逻辑删除

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免
数据被真正的删除。

Mybatis-Plus就提供了这样的功能,方便我们使用,接下来我们一起学习下。


1.1 修改表结构

tb_user表增加deleted字段,用于表示数据是否被删除,1代表删除,0代表未删除。

Navicat执行下列SQL语句:

ALTER TABLE `tb_user` ADD COLUMN `deleted` int(1) NULL DEFAULT 0 COMMENT '1代表删除,0代表未删除' AFTER `version`;

同时,也修改User实体,增加deleted属性并且添加@TableLogic注解,标识这是一个逻辑删除的字段:
在这里插入图片描述
User.java
在这里插入图片描述


1.2 配置删除状态和未删除状态的值

在这里插入图片描述
application.properties

# 删除状态的值为:1
mybatis-plus.global-config.db-config.logic-delete-value=1
# 未删除状态的值为:0
mybatis-plus.global-config.db-config.logic-not-delete-value=0

在这里插入图片描述


1.3 测试


1.3.1 先逻辑删除id为3的数据

在这里插入图片描述
SpringbootMybatisplusApplicationTests.java

    @Test
    public void testDeleteById() {
        this.userMapper.deleteById(3L);
    }

运行结果:

生成的sql语句为:UPDATE tb_user SET deleted=1 WHERE id=? AND deleted=0
在这里插入图片描述
在这里插入图片描述


1.3.2 现在查询所有数据

在这里插入图片描述
SpringbootMybatisplusApplicationTests.java

    @Test
    public void testDeleteById() {
        for (User user : this.userMapper.selectList(null)) {
            System.out.println(user);
        }
    }

运行结果:

发现没有查出id3的数据
在这里插入图片描述


2. 说明

在这里插入图片描述

刚开始我的测试结果一直不正常,我去网上查了一下,我的Mybatis-Plus的版本是3.1.0,低于3.1.1 所以我把版本升高到了3.3.2就可以正常执行了。

版本可以等于3.1.1



Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐