# 逻辑删除

# 如果使用MP逻辑删除, MPJ默认也会带上逻辑删除

可以通过以下方式关闭逻辑删除

  • 配置文件全局关闭副表逻辑删除(默认开启)
    mybatis-plus-join:
      #关闭副表逻辑删除 默认开启(true)
      sub-table-logic: false
    
  • 关闭本次查询副表逻辑删除
    wrapper.disableSubLogicDel()
    
  • 关闭本次查询主表逻辑删除
    wrapper.disableLogicDel()
    

# 改变逻辑删除条件位置

  • 全局配置副表逻辑删除条件的位置(1.4.4+)
      mybatis-plus-join:
        #副表逻辑删除条件的位置 支持 where / on  
        #默认 on (1.4.8+) 
        #注意:1.4.7.2及之前版本默认为where
        logic-del-type: on
    
  • 本次查询所有副表逻辑删除条件位置为 on 语句(1.4.4+)
      wrapper.logicDelToOn()
    
  • 本次查询所有副表逻辑删除条件位置为 where 语句(1.4.4+)
      wrapper.logicDelToWhere()
    

# 自定义逻辑删除位置

如果既需要where又需要on可以关闭附表逻辑删除,自定义条件实现

List<Map<String, Object>> list = userMapper.selectJoinMaps(JoinWrappers.lambda(UserDO.class)
        .selectAll(UserDO.class)
        //关闭本次查询副表逻辑删除
        .disableSubLogicDel()
        .leftJoin(AddressDO.class, on -> on
                .eq(AddressDO::getUserId, UserDO::getId)
                //手动添加 ON 语句逻辑删除
                .eq(AddressDO::getDel, "未删除标识"))
        //手动添加 where 语句逻辑删除
        .eq(UserDO::getDel, "未删除标识"));