逻辑删除

12/13/2023

对于某些重要的数据,用户进行删除操作后将无法恢复(或恢复成本很高),此时我们设计表的时候应该不能进行物理删除, 需要使用逻辑删除,定期维护表数据(确认已经不需要恢复,物理删除)

# 逻辑删除注解

如需使用逻辑删除,只需在实体类某个字段上加上@TableLogic注解即可

@TableName(value ="t_order_return_reason")
@Data
public class OrderReturnReason implements Serializable {
    /**
     * 
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 退货原因
     */
    @TableField(value = "name")
    private String name;

    /**
    * 逻辑删除
    */
    @TableField(value = "del")
    private Integer del;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 逻辑删除全局配置

如果每个字段都指定注解@TableLogic,未免有点太过繁琐,mybatis-plus提供了逻辑删除的全局配置,我们只需在设计表 的适合,将表名的逻辑删除字段都设置为统一的名称即可,mybatis-plus在进行删除操作会自动拦截字段,如果表中有该字段, 则进行更新操作(逻辑删除),没有,则进行物理删除(delete操作)

mybatis-plus:
  mapper-locations:
    - classpath:mapper/*.xml
    - classpath:dao/*.xml
  global-config:
    db-config:
      logic-delete-field: del   # 指定逻辑删除字段
      logic-delete-value: 1     # 指定字段上哪个值代表删除
      logic-not-delete-value: 0  # 指定字段上哪个值代表为删除
1
2
3
4
5
6
7
8
9