mybatis-plus逻辑删除

301 阅读2分钟

mybatis-plus逻辑删除

逻辑删除就是假删除的意思,就是我们在数据库中设置一个新的字段用来标识这个数据是删除还是未删除。

支持的数据类型

逻辑删除字段支持所有数据类型,但推荐使用 IntegerBoolean 或 LocalDateTime。如果使用 datetime 类型,可以配置逻辑未删除值为 null,已删除值可以使用函数如 now() 来获取当前时间。

使用方法

步骤1:配置全集逻辑删除字段

在application.yml中配置Mybatis-Plus的全局逻辑删除属性:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted # 全局逻辑删除字段名
      logic-delete-value: 1 # 逻辑已删除值
      logic-not-delete-value: 0 # 逻辑未删除值

步骤2:在实体中使用@TableLogic注解

public class User {
    // 其他字段...

    @TableLogic
    private Integer deleted;
}

比如:
在数据库中定一个新的字段 例如:deleted设置他的数据类型为int 长度为1 默认值为0

然后将这个数据库表对应的实体类新添加一个属性 private Integer deleted; 并添加注解@TableLogic;

这样的话mybatis-plus在进行数据库中的数据删除的时候就变为更新语句了

例如设置完逻辑删除之后,

在进行数据库删除的时候:

UPDATE user SET is_deleted=1 WHERE id=? AND deleted=0

再行进行数据库数据查询的时候:

SELECT id,name,age,email,is_deleted FROM user WHERE deleted=0

如果进行逻辑删除之后还要进行大量的查询操作,由于我们的逻辑删除字段的存在可能会导致查询的性能降低,这时候我们就要考虑是否还要使用逻辑删除字段,或者可以新建一张删除表,将删除的数据库存储到删除表中这样就不会导致我们的查询效率降低了,但是麻烦了一点。