ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pagehelper 分页实现真假分页

2022-05-26 09:33:30  阅读:169  来源: 互联网

标签:分页 list pageInfo 真假 new pagehelper Page


 

借鉴博客:https://www.jianshu.com/p/64657c9da39f

 

 

添加分页插件依赖:pagehelper

<dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>4.1.1</version>
            </dependency>

 

1、真分页:它在数据库里使用limit进行处理,算是在数据库中就分好页拿相应数据

 @Override
    public IPage<TimeTemplateVo> page(PageTimeTemplateBo bo) {
        boolean isSysAdmin = isSystemAdmin(null);
        PageHelper.startPage(bo.getPageNum(), bo.getPageSize());
        List<TimeTemplateVo> timeTemplateVos = timeTemplateMapper.findPage(bo,isSysAdmin,CurrentUserUtil.currentUserId());
        PageInfo<TimeTemplateVo> pageInfo = new PageInfo<TimeTemplateVo>(timeTemplateVos);
        if (CollectionUtil.isEmpty(timeTemplateVos)) {
            return new Page<>();
        }
        //转换分页类
        Page<TimeTemplateVo> timeTemplateVoPage = new Page<>();
        timeTemplateVoPage.setTotal(pageInfo.getTotal());
        timeTemplateVoPage.setRecords(pageInfo.getList());
        timeTemplateVoPage.setSize(pageInfo.getSize());
        return timeTemplateVoPage;
    }

 

  真分页比假分页效率高。

 

 

 2、假分页:有时候会出现这样的情况:就是没办法在数据库中分好页拿数据,而是要先把所有数据查出来,然后再对list结果数据进行分页,主要还用到了list.sublist实现:

/**
     * @Description: 手动实现分页
     * @param list  所有数据
     * @param pageNum  分页页码
     * @param pageSize  分页条数
     **/
    public <T> PageInfo<T> startPage(List<T> list, Integer pageNum, Integer pageSize) {
        //创建Page类
        com.github.pagehelper.Page page = new com.github.pagehelper.Page(pageNum, pageSize);
        //为Page类中的total属性赋值
        page.setTotal(list.size());
        //计算当前需要显示的数据下标起始值
        int startIndex = (pageNum - 1) * pageSize;
        int endIndex = Math.min(startIndex + pageSize, list.size());
        //从链表中截取需要显示的子链表,并加入到Page
        page.addAll(list.subList(startIndex,endIndex));
        //以Page创建PageInfo
        PageInfo pageInfo = new PageInfo<>(page);
        return pageInfo;
    }

// 调用完 再进行封装
       Page<DeviceOfflineStatisticsVo> deviceOfflineStatisticsVoPage = new Page<>();
        deviceOfflineStatisticsVoPage.setTotal(pageInfo.getTotal());
        deviceOfflineStatisticsVoPage.setRecords(pageInfo.getList());
        deviceOfflineStatisticsVoPage.setSize(pageInfo.getSize());
        return deviceOfflineStatisticsVoPage;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:分页,list,pageInfo,真假,new,pagehelper,Page
来源: https://www.cnblogs.com/spll/p/16312220.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有