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

问题说明:

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

控制器设置分页参数

实现类更改了返回对象

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


page类型验证

解决方案:

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

重写PageInterceptor

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

count总数

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

注册分页

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

Page

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。