搜索
您的当前位置:首页正文

MyBatis-Plus 逻辑删除

来源:易榕旅网

MyBatis-Plus 逻辑删除

MyBatisPlus提供了对逻辑删除的支持,开启了逻辑删除功能以后,我们就可以像普通删除一样做CRUD,基本不用考虑代码逻辑问题。

数据表新增逻辑删除字段

alter table address add deleted bit default b'0' null comment '逻辑删除';

实体类添加deleted字段

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("address")
@Schema(description="Address对象")
public class Address implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @Schema(description = "逻辑删除")
    private Boolean deleted;
}

yml中配置逻辑删除字段

mybatis-plus:
  type-aliases-package: com.feng.mybatisplusdemo1.po
  global-config:
    db-config:
      id-type: auto
      logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

逻辑删除使用建议

注意: 逻辑删除本身也有自己的问题,比如:

  • 会导致数据库表垃圾数据越来越多,从而影响查询效率
  • SQL中全都需要对逻辑删除字段做判断,影响查询效率

因此,不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top