746 Star 2.8K Fork 834

abel533 / Mybatis_PageHelper

 / 详情

PageHepler5.1.6 与PageHepler4.1.6 oracle分页语句问题

已完成
创建于  
2020-04-03 09:50

5.1.6:

   public String getPageSql(String sql, Page page, CacheKey pageKey) {
        StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120);
        sqlBuilder.append("SELECT * FROM ( ");
        sqlBuilder.append(" SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( ");
        sqlBuilder.append(sql);
        sqlBuilder.append(" ) TMP_PAGE)");
        sqlBuilder.append(" WHERE ROW_ID <= ? AND ROW_ID > ?");
        return sqlBuilder.toString();
    }

4.1.6:

 public String getPageSql(String sql) {
        StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120);
        sqlBuilder.append("select * from ( select tmp_page.*, rownum row_id from ( ");
        sqlBuilder.append(sql);
        sqlBuilder.append(" ) tmp_page where rownum <= ? ) where row_id > ?");
        return sqlBuilder.toString();
    }

为什么在我们项目测试中4.1.6这个分页效率更高?

评论 (1)

罗伯特罗罗罗 创建了任务
罗伯特罗罗罗 修改了描述
展开全部操作日志

两个方式在最新版本都存在,默认选择的5.1.6这种方式,当存在排序时,第二种会出现数据错乱。

可以通过配置下面参数切换为第二种:

  <property name="dialectAlias" value="oracle=com.github.pagehelper.dialect.helper.Oracle9iDialect"/>
abel533 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
8363 free 1578914558
Java
1
https://gitee.com/free/Mybatis_PageHelper.git
git@gitee.com:free/Mybatis_PageHelper.git
free
Mybatis_PageHelper
Mybatis_PageHelper

搜索帮助