解决 PageInfo 返回的 total 不正确,和 list 的 size 一样_new pageinfo 放在controller 总数不正确-程序员宅基地

技术标签: spring  PageInfo  java  bug  分页  ssm  

controller: 

public PageInfo<UserFromVO> listUser(User user, CommonQo commonQo) {

        PageHelper.startPage(commonQo.getPageNum(), commonQo.getPageSize());
        List<User> list = userService.findList(user);
        List<UserFromVO> voList = new ArrayList();
        for(User u : list) {
            if(u.type==1) {
                ***
                voList.add
            }
        }
        return new PageInfo<>(volist);
}

 很简单的几行代码,就是自己写了一个vo用来封装要回显页面的数据,很普通的做法,但是现实的时候数据是有,一页也显示了10条,但总条数总是不对(56条),total的值和pageSize的值是一样的

解决:

public PageInfo<UserFromVO> listUser(User user, CommonQo commonQo) {

        PageHelper.startPage(commonQo.getPageNum(), commonQo.getPageSize());
        List<User> list = userService.findList(user);
        //debug断点
        PageInfo<User> pageInfo = new PageInfo<>(list);
        List<UserFromVO> voList = new ArrayList();
        for(User u : list) {
            if(u.type==1) {
                ***
                voList.add
            }
        }
        //
        PageInfo<UserFromVO> page= new PageInfo<>(volist);
        BeanUtils.copyProperties(pageInfo,page);
        return page;
}

打断点看了一下,原因是自己封装的vo把PageInfo原有的属性破坏了,看一下源码: 

    /**
     * 包装Page对象
     *
     * @param list          page结果
     * @param navigatePages 页码数量
     */
    public PageInfo(List<T> list, int navigatePages) {
        if (list instanceof Page) {
            Page page = (Page) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.orderBy = page.getOrderBy();

            this.pages = page.getPages();
            this.list = page;
            this.size = page.size();
            this.total = page.getTotal();
            //由于结果是>startRow的,所以实际的需要+1
            if (this.size == 0) {
                this.startRow = 0;
                this.endRow = 0;
            } else {
                this.startRow = page.getStartRow() + 1;
                //计算实际的endRow(最后一页的时候特殊)
                this.endRow = this.startRow - 1 + this.size;
            }
        } else if (list instanceof Collection) {
            this.pageNum = 1;
            this.pageSize = list.size();

            this.pages = 1;
            this.list = list;
            this.size = list.size();
            this.total = list.size();
            this.startRow = 0;
            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
        }
        if (list instanceof Collection) {
            this.navigatePages = navigatePages;
            //计算导航页
            calcNavigatepageNums();
            //计算前后页,第一页,最后一页
            calcPage();
            //判断页面边界
            judgePageBoudary();
        }
    }

相信你也看出了关键:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39765635/article/details/87694796

智能推荐

Halcon教程一 :软件入门_halcon入门教程-程序员宅基地

文章浏览阅读4.1w次,点赞146次,收藏614次。最近想学习一下机器视觉 用到的库是Halcon自己到网上找halcon的教程不是收费的 就算随便搞搞的没有能系统去学习的知识体系而且大多博主可能就一篇教程 对于新手来说简直是致命的 我国互联网的生态建设如此不堪出现了有人想学 没人牵头的状况为了让大家更加如何去使用halcon我准备探索之后出一套halcon系列的教程如果你也在学halcon 可以点个收藏 一起学习首先halcon软件打开后是这个样子的可以看到上面两行是一些功能选项这个我们先不管我们首先认识一下下面的四个窗口左上角_halcon入门教程

JavaWeb企业实战项目(五):后台模块1_admin product listservlet-程序员宅基地

文章浏览阅读855次。文章目录 1、任务总述  2、权限过滤器  3、查看所有分类  4、添加分类信息  5、查看商品信息  6、上传商品信息原理分析  7、实现上传商品信息_admin product listservlet

深井地下水监测测量仪_深井水监测方案-程序员宅基地

文章浏览阅读705次。液位传感器外形尺寸:WH6显示控制仪主要技术参数:显示范围:—999~9999精度:±0.5%+1个字;继电器输出:AC250V/3A(阻性负载)上、下限两组常开常闭输出,可自己任意设定;工作电源:AC220V,50Hz;仪表的外型尺寸:160*80*95(mm),也有其他尺寸供选择;仪表的安装开孔尺寸:152*76(mm);仪表的输入信号:二线制变送器4~20mA。如要取4~20mA电流,只要在液位传感器回路里串联即可。电 源: 85V AC~265V AC,120VDC~380VDC,功._深井水监测方案

Bugku CTF---where is flag 5_bugkuwhere is flag 5-程序员宅基地

文章浏览阅读1.5k次。【喜欢周周ovo】_bugkuwhere is flag 5

【最全】安卓环境变量配置_android 环境变量配置-程序员宅基地

文章浏览阅读3.7k次。正文:安卓环境变量,一般我们配置 ANDROID_HOME 的几个变量就完,但现在,ANDROID_HOME这个变量已经被废弃了,变成了ANDROID_SDK_ROOT,这估计是android sdk tools 26 带来的变更。低版本可以不用理会,高版本目前还可以使用旧的变量名。一般我们配置:%ANDROID_HOME%\tools;%ANDROID_HOME%\platf..._android 环境变量配置

ubuntu 修改hosts生效_i.mx 6 替换ubuntu的/etc/hosts-程序员宅基地

文章浏览阅读3.7k次。Method 1Install first the nscd daemon with this command from the terminal:sudo apt-get install nscdThen clear your DNS data with this command:sudo /etc/init.d/nscd restartMethod 2You can also try to f..._i.mx 6 替换ubuntu的/etc/hosts

随便推点

生于云,长于云,华为云推动开发者数字化创新-程序员宅基地

文章浏览阅读471次。三十余年来,华为一直坚持技术创新,不断突破极限,用技术推动世界进步。华为云作为智能世界的云底座,将协同支撑鲲鹏、昇腾等在内的开发者生态,为开发者提供广阔舞台,实现一切皆服务,共创新价值。

Windows7虚拟机无法安装VMware Tools,出现SP1问题,以及KB4474419补丁安装不了_vmware补丁-程序员宅基地

文章浏览阅读2.9k次,点赞15次,收藏24次。前些天用VMware Workstation17安装了个Windows7系统的虚拟机。Windows7虚拟机无法安装VMware Tools,出现SP1问题,以及KB4474419补丁安装不了。先安装Windows7 Service Pack1(SP1),后安装KB4474419补丁。重启之后就可以安装VMware Tools了_vmware补丁

No compiler detected, make sure you are running on top of a JDK instead of a JRE.-程序员宅基地

文章浏览阅读1.3k次,点赞4次,收藏2次。java.lang.IllegalStateException: No compiler detected, make sure you are running on top of a JDK instead of a JRE._no compiler detected, make sure you are running on top of a jdk instead of a

python3+PyQt5+pycharm桌面GUI开发_程序员之路:python3+pyqt5+pycharm桌面gui开发-程序员宅基地

文章浏览阅读874次。http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html先看效果:程序员之路:python3+PyQt5+pycharm桌面GUI开发图 1没错,学过C#的同学应该很熟悉这个界面,按钮风格和界面风格很相似,万万没想到,python也可以做出这样的界面,简直了!(图 1)正文开始一、安装python为啥要说这个,我们打开pip,搜索:Py..._程序员之路:python3+pyqt5+pycharm桌面gui开发

模板 - 无旋Treap-程序员宅基地

文章浏览阅读74次。普通平衡树:#include<bits/stdc++.h>using namespace std;typedef long long ll;#define ls(p) ch[p][0]#define rs(p) ch[p][1]const int MAXN = 100000 + 5;int val[MAXN], ch[MAXN][2], rnd[MAXN], ..._无旋treap c++模板

2.4G无线通信_2.4g通信-程序员宅基地

文章浏览阅读5.9k次。2.4G无线通信_2.4g通信

推荐文章

热门文章

相关标签