PageHelper查询对象与返回对象不一致导致的分页失效

问题说明:

在常规查询中,查询出的分页结果可能会进行二次加工,最终的返回对象与最初查询的对象可能不一致,new Pageinfo()时,返回的total值永远就是当前页的size,导致分页失效。

控制器设置分页参数

实现类更改了返回对象

因为源码中对返回对象做了类型验证,这里无法通过,故如此。


page类型验证

解决方案:

PageHelper是通过拦截器实现的分页,加工执行SQL并获取到count结果,实现类为com.github.pagehelper.PageInterceptor,可以通过继承此类,重写部分代码解决。

重写PageInterceptor

将原类中所有代码复制过来,这里可以做一个ThredLocal来存储当前count结果

count总数

还需更改注册的分页对象,换成刚刚自定义的类

注册分页

最终的返回结果从ThredLocal获取,并清空即可。

Page

你可能感兴趣的:(PageHelper查询对象与返回对象不一致导致的分页失效)