MyBatis-Plus-逻辑删除

在MyBatis-Plus中,逻辑删除的配置主要有2种方式:全局配置字段配置

  1. 全局配置逻辑删除

如果项目中所有表的逻辑删除字段名及其逻辑值都相同,可以通过全局配置来统一管理逻辑删除规则。

  • 全局配置方式
    在application.yml中配置全局逻辑删除字段名及其逻辑值:
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted  # 全局逻辑删除字段名 注解方式优先级更高
      logic-delete-value: 1        # 逻辑已删除值 默认1
      logic-not-delete-value: 0    # 逻辑未删除值 默认0
  • 实体类中的逻辑删除字段

如果实体类中的逻辑删除字段名与全局配置的字段名一致(例如deleted),则不需要添加@TableLogic注解。MyBatis-Plus会自动识别该字段为逻辑删除字段。

@Data
@TableName("sys_user")
public class SysUser {
    @TableId
    private Long id;
    private String name;
    private String email;

    // 逻辑删除字段,与全局配置的字段名一致,无需添加@TableLogic注解
    private Integer deleted;
}
  1. 字段配置逻辑删除

如果项目中某些表的逻辑删除字段名或逻辑值与全局配置不同,可以在实体类的逻辑删除字段上添加@TableLogic注解进行局部配置。

  • 字段配置方式
    在实体类的逻辑删除字段上添加@TableLogic注解:
@Data
@TableName("sys_user")
public class SysUser {
    private Long id;
    private String name;
    private String email;

    // 局部覆盖全局配置 注解优先级更高
    // @TableLogic(value = "5", delval = "6") // 明确指定逻辑未删除值和已删除值
    @TableLogic
    private Integer delFlag;
}

注意:

  • 全局配置:适用于所有表的逻辑删除字段名和逻辑值一致的情况。
  • 注解配置:适用于需要对特定表的逻辑删除字段进行特殊配置的情况。
  • 优先级:@TableLogic注解的优先级高于全局配置,两者互相配合,可以覆盖全局配置的逻辑值。

你可能感兴趣的:(mybatis,mybatis,java,servlet)