常见的pageHelper失效,一般由编写失误导致,根据源码指出pageHelper.startPage()方法必须放在查询的上面,
并且分页只会对下面第一次查询有效
我们这次的失效不是编写失误造成,从位置到mybatis映射都review了好几遍,没有发现任何失误
案例
- db有3条记录
- pageNum传3;pageSize传10 (也就是第三页,每页1o条)
错误
这时候你会发现,他还会查出三条出来,正常第二页就已经没有任何数据了
原因
发现原开发人员copy网上的mybatis-config.xml中有这么一段配置
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- config params as the following -->
<!–分页参数合理化 –>
<property name="reasonable" value="true"/>
</plugin>
</plugins>
他的作用指,如果db总条数也就是total,小于了pageNum*pageSize之后的条数,那么他就会重定向pageNum为合理的数值,
案例中pageNum就被重新指定回了1,所以还能查出来
一般前端同学来说,不会发现这个问题,因为前端分页组件一般都会根据total除以pageSize来加载一共多少页,不会出现pageNum不合理的情况,但对于后端对接后端同学来说,如果对方工作做的疏忽传了个不合理的值,那么就会出现这个情况,总之我们可以注释掉这段配置即可