baomidou / mybatis-plus

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

逻辑删除关闭的问题,上次提的issue 没有解决!!!! #4197

Closed mouzt closed 2 years ago

mouzt commented 2 years ago

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

问题:

使用 Wrapper 可以使用分页插件但是实现不了查询逻辑删除的数据。 使用 xml 写 sql,可以查询逻辑删除的数据,但是使用不了 mybatis plus 的分页插件了。 目前很矛盾呀~有啥好的解决方案吗??

jptx1234 commented 2 years ago

使用 xml 写 sql,可以查询逻辑删除的数据,但是使用不了 mybatis plus 的分页插件了。

XML方式可以使用分页插件啊,我们的项目一直在用。 文档说明:XML 自定义分页

mouzt commented 2 years ago

使用 xml 写 sql,可以查询逻辑删除的数据,但是使用不了 mybatis plus 的分页插件了。

XML方式可以使用分页插件啊,我们的项目一直在用。 文档说明:XML 自定义分页

666,谢谢

setlx commented 2 years ago

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

问题:

使用 Wrapper 可以使用分页插件但是实现不了查询逻辑删除的数据。 使用 xml 写 sql,可以查询逻辑删除的数据,但是使用不了 mybatis plus 的分页插件了。 目前很矛盾呀~有啥好的解决方案吗??

都可以使用 自定义sql 查询被删除的记录可以使用分页和条件构造Wrapper

  /**
   * 逻辑删除的记录也会查询
   *
   * @param wrapper
   * @return
   */
  @Select("select ${ew.sqlSelect} from user ${ew.customSqlSegment}")
  User selectOneWithDelete(@Param(Constants.WRAPPER) Wrapper wrapper);

  @Select("select ${ew.sqlSelect} from user ${ew.customSqlSegment}")
  Page selectPageWithDeleted(Page page, @Param(Constants.WRAPPER) Wrapper wrapper);

// 调用

  Page page = new Page(1, 20);
  userMapper.selectPageWithDeleted(
          page,
          Wrappers.lambdaQuery(User.class)
                  .select(
                          User::getId,
                          User::getNickname,
                          User::getPassword,
                          User::getDisable,
                          User::getDeleted
                  )
                  .eq(User::getMobile, mobile)
  );
  User user1 = userMapper.selectOneWithDelete(
          Wrappers.lambdaQuery(User.class)
                  .select(
                          User::getId,
                          User::getNickname,
                          User::getPassword,
                          User::getDisable,
                          User::getDeleted
                  )
                  .eq(User::getMobile, mobile)

  );

执行的sql

SELECT COUNT(*) AS total
FROM user
WHERE mobile = '17600000000'

Execute SQL:
SELECT id, nickname, password, is_disable AS disable, is_deleted AS deleted
FROM user
WHERE mobile = '17600000000'
LIMIT 20

Execute SQL:
SELECT id, nickname, password, is_disable AS disable, is_deleted AS deleted
FROM user
WHERE mobile = '17600000000'
win301 commented 1 year ago

@setlx 2023年4月24日,特意来给你点个赞,不知道plus开发团队,什么时候,能够改一下,目前真的是太不方便了