Java分页查询接口实现-根据返回的所有数据手动分页

 在某些时候,我们调用第三方接口时,他们的接口有进行分页,但是并不能满足我们的需求。 那么我们就需要自己进行分页处理。 思路一般是:

   第一步:获取第三方接口调用返回的所有结果(可以循环获取),具体示例参考Step1.大家要根据自己的实际情况来调整修改。

   第二步:根据返回的结果进行分页(调用方法Step2)。 同时,我写了个分页实现的工具类(Step3)供大家参考使用

    Step1:循环获取第三方接口的所有数据

            int pageIndex = 0;
            int pageSize = 50;
//循环,分页获取所有数据返回结果
            do{
                pageIndex++;
//第三方接口的分页入参
                requestType.pageInfo = new SoaPageInfoDto();
                requestType.pageInfo.pageIndex = pageIndex;
                requestType.pageInfo.pageSize = pageSize;
//调用第三方接口
                soaRep = CreditCardOfflineSoaSrvClient.getInstance().queryTrainTicketUserStandardListNew(requestType);
                if(soaRep == null || soaRep.queryUserInfoList == null){
                    break;
                }
                resultList.add(soaRep);
            }while ((pageSize*pageIndex) < soaRep.pageDto.pageCount);  /*循环结束条件是当前查询条数大于返回的结果数*/

     Step2:返回结果之前手动分页

            if (activityInfoList != null && activityInfoList.size() > 0) {
               //实际请求的pageIndex和pageSize
                int start = (req.pageIndex -1) * req.pageSize;
                int end = req.pageIndex * req.pageSize;
                response.activityInfos = PageHandleUtil.handlePage(activityInfoList, start, end);
            }

      Step3(PageHandleUtil工具类):

public class PageHandleUtil {

    public static  List handlePage(List source, int start, int end){
        int total = source.size();
        end = end > total ? total : end;
        if (end <= start) {
            return null;
        }
        return source.subList(start,end);
    }

}

       以上的情况是在项目当中实际运用时碰到了问题以及解决办法。后续有时间我会抽象总结一下。上述示例是写下来备忘,同时仅供大家参考。有问题大家可以留言交流。

你可能感兴趣的:(项目实践,深入学习Java)