[!TIP]
传统逻辑删除
所谓逻辑删除就是数据不是真的删除,而是以一个字段标识(如del_flag 0:正常,1: 删除),这样删除就不会执行DELETE语句了,而是使用
UPDATE tableName SET delflag = 1 WHERE id = xxx
这样查询数据的时候就使用
SELECT * FROM tablName WHERE del_flag = 0 where id = xxx
后面所有的操作都需要在WHERE中带上 del_flag = 0 条件,这里我们基础框架使用了MP插件,它能够帮我们完成逻辑删除并且我们也不用改变现有的代码量,只需要在实体中添加一个是否删除字段的标识即可。
[!TIP]
基于MyBatisPlus的逻辑删除
@TableLogic
private Integer delFlag = 0;
就是上面那么简单,只需要在对应的字段上添加 @TableLogic 注解即可、如果你不想每个类都写这个字段以及注解的话,我们也为你提供了一个 AdminBaseEntityWithLogicDelete 类,你只需要继承他即可
package com.ustcinfo.ishare.eip.admin.service.sys.entity.base;
import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 添加逻辑删除
*
* @author liuchengbiao
* @date 2019/4/20 下午4:28
*/
@Data
public class AdminBaseEntityWithLogicDelete {
/**
* 逻辑删除字段标识
*/
@TableLogic
@ApiModelProperty(notes = "删除标识(0:正常,1:删除)", hidden = true)
private Integer delFlag = 0;
}
[!DANGER]
delFlag的类型、删除的值、未删除的值都是可以通过配置文件配置的,如下
mybatis-plus:
global-config:
db-config:
#删除时的值
logic-delete-value: 1
#未删除的值
logic-not-delete-value: 0