baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.3k stars 4.3k forks source link

逻辑删除的@TableLogic注解文档描述不符 #4202

Closed ying010 closed 2 years ago

ying010 commented 2 years ago

当前使用版本(必填,否则不予处理)

版本:3.4.3 希望指正下我这配置是否有误,还是文档中写的忽略步骤2的起始版本不对(这是诉求,下面是问题描述)

该问题是如何引起的?(确定最新版也有问题再提!!!)

文档中描述,配置逻辑删除时需要两步:

  1. 配置com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig;
  2. 实体类字段上加@TableLogic注解 但是配置步骤1时提到如果是3.3.0及以后版本中配置了logic-delete-field可以忽略第二步配置。但事实是在3.4.3中只配置第一步依然不能实现逻辑删除,必须两步都配才可以。 这个问题处理并不复杂,但是只看文档易造成迷惑。

重现步骤(如果有就写完整)

只在配置文件中配逻辑删除配置(其他的entity扫描等也有配,但那并不是相关项所以没贴),而不在字段加@TableLogic;使用IService的removeById(),和BaseMapper的deleteById(),都会导致数据物理删除而不是逻辑删除。只有在字段上加了@TableLogic才会逻辑删除。

mybatis-plus:
  global-config:
    db-config:
      #逻辑删除配置(下面3个配置)
      #逻辑删除字段
      logic-delete-field: delete_status
      #删除
      logic-delete-value: 1
      #未删除
      logic-not-delete-value: 0

报错信息

huayanYu commented 2 years ago

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

实体字段名 实体字段名 实体字段名 实体字段名 实体字段名

Bjergsenj commented 2 years ago

当前使用版本(必填,否则不予处理)

版本:3.4.3 希望指正下我这配置是否有误,还是文档中写的忽略步骤2的起始版本不对(这是诉求,下面是问题描述)

该问题是如何引起的?(确定最新版也有问题再提!!!)

文档中描述,配置逻辑删除时需要两步:

  1. 配置com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig;
  2. 实体类字段上加@TableLogic注解 但是配置步骤1时提到如果是3.3.0及以后版本中配置了logic-delete-field可以忽略第二步配置。但事实是在3.4.3中只配置第一步依然不能实现逻辑删除,必须两步都配才可以。 这个问题处理并不复杂,但是只看文档易造成迷惑。

重现步骤(如果有就写完整)

只在配置文件中配逻辑删除配置(其他的entity扫描等也有配,但那并不是相关项所以没贴),而不在字段加@TableLogic;使用IService的removeById(),和BaseMapper的deleteById(),都会导致数据物理删除而不是逻辑删除。只有在字段上加了@TableLogic才会逻辑删除。

mybatis-plus:
  global-config:
    db-config:
      #逻辑删除配置(下面3个配置)
      #逻辑删除字段
      logic-delete-field: delete_status
      #删除
      logic-delete-value: 1
      #未删除
      logic-not-delete-value: 0

报错信息

logic-delete-field得用实体类的字段名,这里面是和实体类的名称做比较的

1640854057(1)

TOP-LH commented 2 months ago

当前使用版本(必填,否则不予处理)

版本:3.4.3 希望指正下我这配置是否有误,还是文档中写的忽略步骤2的起始版本不对(这是诉求,下面是问题描述)

该问题是如何引起的?(确定最新版也有问题再提!!!)

文档中描述,配置逻辑删除时需要两步:

  1. 配置com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig;
  2. 实体类字段上加@TableLogic注解 但是配置步骤1时提到如果是3.3.0及以后版本中配置了logic-delete-field可以忽略第二步配置。但事实是在3.4.3中只配置第一步依然不能实现逻辑删除,必须两步都配才可以。 这个问题处理并不复杂,但是只看文档易造成迷惑。

重现步骤(如果有就写完整)

只在配置文件中配逻辑删除配置(其他的entity扫描等也有配,但那并不是相关项所以没贴),而不在字段加@TableLogic;使用IService的removeById(),和BaseMapper的deleteById(),都会导致数据物理删除而不是逻辑删除。只有在字段上加了@TableLogic才会逻辑删除。

mybatis-plus:
  global-config:
    db-config:
      #逻辑删除配置(下面3个配置)
      #逻辑删除字段
      logic-delete-field: delete_status
      #删除
      logic-delete-value: 1
      #未删除
      logic-not-delete-value: 0

报错信息

logic-delete-field得用实体类的字段名,这里面是和实体类的名称做比较的

1640854057(1)

InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
查询逻辑删除信息
InterceptorIgnoreHelper.clearIgnoreStrategy();

这样逻辑删除会生效吗?