pagehelper 真假分页

分页是项目经常用到的,一般都选择使用pagehelper 来进行处理

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

1 真分页: 即每次只从数据库取到相应的数据,然后返回,这样可以性能要比假分页高一些

@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;
    }

随便粘贴一个例子,这里面 执行后,会打印出limit 则为直接从mysql 进行了limit 拼接处理

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;

真假分页概念,这是我认为的,相比大家看完文章已经清楚了,真分页性能确实更好,但是有时候假分页更适合

假分页的场景一般使用在,查询的数据集合,需要特殊处理.比如数据的排序需要经过复杂的计算,而且用此字段来排序,那么假分页就会更加适用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
limit分页查询的语法是在查询语句的末尾使用LIMIT关键字,后面跟上两个参数,第一个参数表示起始位置(偏移量),第二个参数表示返回的记录行数目。语法如下: SELECT * FROM table_name LIMIT offset, count; 其中,offset表示起始位置,表示从查询结果的第几条记录开始返回。count表示返回的记录行数目。 例如,如果要查询表中的前10条记录,可以使用以下语句: SELECT * FROM table_name LIMIT 0, 10; 如果要查询表中的第11到第20条记录,可以使用以下语句: SELECT * FROM table_name LIMIT 10, 10; 这样就可以实现分页查询。 MySQL的LIMIT语法非常优雅,并且易于使用。它可以帮助我们实现简单而高效的分页查询操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [oracle实现一对多数据分页查询筛选示例代码](https://download.csdn.net/download/weixin_38567873/13698453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySql limit分页查询性能分析及优化](https://edu.csdn.net/skill/pg/pg-69d3a1c646004e1da497fed2af57806c)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞旅行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值