记PageHleper 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

项目里面的复杂的查询语句需要进行分页,由于需要根据索引检索,且索引数据需要转格式,故查询语句里面包含 cast() 函数。

使用pageHelper的时候,自带的count语句拼接出来的结果就是在原来的语句上添加如下内容

 select count(*) from ( your origin sql ) t

但是由于sqlserver 分页需要用到order by,
select count(*) from ( your origin sql ) t 这条sql 里面便包含order by。
sqlserver 子查询不支持order by,报错!!!!

下记给出处理方法,供参考

  • 官方方案
    自己写count语句替代插件生成的count语句,版本5.0.4以上
    官方说明链接
  • PageHelper.startPage() 方法不开启count查询,即
PageHelper.startPage(page,size,false);

注:其他的什么使用Top 100 percent 的方法只适用于独立的查询,不适合pagehelper的分页查询,可自测!

你可能感兴趣的:(笔记)