[!TIP]
    传统逻辑删除

    所谓逻辑删除就是数据不是真的删除,而是以一个字段标识(如del_flag 0:正常,1: 删除),这样删除就不会执行DELETE语句了,而是使用

    1. UPDATE tableName SET delflag = 1 WHERE id = xxx

    这样查询数据的时候就使用

    1. SELECT * FROM tablName WHERE del_flag = 0 where id = xxx

    后面所有的操作都需要在WHERE中带上 del_flag = 0 条件,这里我们基础框架使用了MP插件,它能够帮我们完成逻辑删除并且我们也不用改变现有的代码量,只需要在实体中添加一个是否删除字段的标识即可。

    [!TIP]
    基于MyBatisPlus的逻辑删除

    1. @TableLogic
    2. private Integer delFlag = 0;

    就是上面那么简单,只需要在对应的字段上添加 @TableLogic 注解即可、如果你不想每个类都写这个字段以及注解的话,我们也为你提供了一个 AdminBaseEntityWithLogicDelete 类,你只需要继承他即可

    1. package com.ustcinfo.ishare.eip.admin.service.sys.entity.base;
    2. import com.baomidou.mybatisplus.annotation.TableLogic;
    3. import io.swagger.annotations.ApiModelProperty;
    4. import lombok.Data;
    5. /**
    6. * 添加逻辑删除
    7. *
    8. * @author liuchengbiao
    9. * @date 2019/4/20 下午4:28
    10. */
    11. @Data
    12. public class AdminBaseEntityWithLogicDelete {
    13. /**
    14. * 逻辑删除字段标识
    15. */
    16. @TableLogic
    17. @ApiModelProperty(notes = "删除标识(0:正常,1:删除)", hidden = true)
    18. private Integer delFlag = 0;
    19. }

    [!DANGER]
    delFlag的类型、删除的值、未删除的值都是可以通过配置文件配置的,如下

    1. mybatis-plus:
    2. global-config:
    3. db-config:
    4. #删除时的值
    5. logic-delete-value: 1
    6. #未删除的值
    7. logic-not-delete-value: 0