mybatis pagehelper count order by 不生效

背景

  • 有一条复杂的SQL语句,涉及子查询内部排序order by。发现mybatis pagehelpercount的时候会把order by删除。
    在这里插入图片描述
  • 从上图来看order by是被过滤掉了。

解决方案

  • 在原sql增加/*keep orderby*/解决。
  • 我们可以在源码上答案,知道为什么这样做?
  • 定位到CountSqlParser#getSmartCountSql方法。
public static final String KEEP_ORDERBY = "/*keep orderby*/";

在这里插入图片描述

  • getSimpleCountSql方法是直接拼接sql。
    在这里插入图片描述

  • 从上面源码可得知,sql内容中如果包含/*keep orderby*/这个字符串那么count的时候就不会修改原内容。

  • 在xml中增加/*keep orderby*/
    在这里插入图片描述

  • 重启再次请求order by生效了,效果如下所示。
    在这里插入图片描述

posted on 2021-07-29 17:41  愤怒的苹果ext  阅读(885)  评论(2编辑  收藏  举报

导航