问题说明:
在常规查询中,查询出的分页结果可能会进行二次加工,最终的返回对象与最初查询的对象可能不一致,new Pageinfo()
时,返回的total
值永远就是当前页的size,导致分页失效。
因为源码中对返回对象做了类型验证,这里无法通过,故如此。
解决方案:
PageHelper
是通过拦截器实现的分页,加工执行SQL并获取到count
结果,实现类为com.github.pagehelper.PageInterceptor
,可以通过继承此类,重写部分代码解决。
将原类中所有代码复制过来,这里可以做一个ThredLocal
来存储当前count
结果
还需更改注册的分页对象,换成刚刚自定义的类
最终的返回结果从ThredLocal
获取,并清空即可。