mybatis对查询的数据手动分页

本文介绍了在项目开发中,当查询数据需复杂处理后,如何手动实现分页,包括重新计算总条目、确定起始和结束索引,以及返回处理后的分页数据给前端展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目开发中有时候由于查询的数据比较复杂,可能会对查询的到的数据进行一些处理,比如合并,或者筛选掉一部分的数据,那么就无法再查询的时候去进行分页了,而需要将处理之后的集合数据,进行手动分页处理,以下是手动处理分页的案例参考:

   Page<返回的实体对象> resultPage = Mapper.selectData(param);//通过sql查询得到的数据

    //...中间对resultPage里的Records数据进行了处理,这里省略

   
    resultPage.setRecords(resultList);//然后新生成了一个集合对象resultList 把处理之后的数据重新赋值到Records里

   //手动根据以下几个条件对数据进行分页
   resultPage.setTotal(resultList.size());//重新对总条目赋值,因为数据改变了
   long current = param.getPageNo();//页面传入的当前页
   long pages = param.getPageSize();//页面传入的每页条目
   long total = resultPage.getTotal();//修改得到的总条数

   long startIndex=0;//初始条目
   long endIndex =0;//每页条目

   long indexPage = (current - 1)*pages;
   if(indexPage > total){
      startIndex = 0;
   }else{
      startIndex = indexPage;
   }

   long pageSize =  current*pages;
   if(pageSize>total){
      endIndex = total;
   }else{
      endIndex = pageSize;
   }

   List<返回的实体对象> paginatedList = resultList.subList((int)startIndex,(int)endIndex);
   resultPage.setRecords(paginatedList);//分页之后重新赋值到返回的Records对象里
   return new PageResult<>(resultPage);//最后返回到页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值