递归查询全量分页数据问题

项目需要全量同步对方的用户机构数据,对方限制了分页条件,就需要递归全量拖过来。下面是实例代码:

java 复制代码
// 最大条数
public abstract class BaseLoader<T> {

   private final static Integer PAGE_SIZE = 1000;
 
   private Class<T> tClass;

    private String uri;

    public BaseLoader(Class<T> tClass, String uri) {
        this.tClass = tClass;
        this.uri = uri;
    }

   protected List<T> loadDataArray() {
        List<T> dataArrayResult = new ArrayList<>();
        PageNum pageNum = new PageNum();
        doLoad(dataArrayResult, pageNum);
        return dataArrayResult;
    }

    // 递归分页查找,把所有数据抓过来
    private void doLoad(List<T> dataArrayResult, PageNum pageNum) {
        List<T> dataArray = doLoadDataArray(pageNum);
        if (ZYListUtils.isEmptyList(dataArray)) {
        	return;
        }
       
        dataArrayResult.addAll(dataArray);
          // 比长度小,没得下一页了
          if (dataArray.size() < PAGE_SIZE) {
              return;
          }
          // 页数+1
          pageNum.nextPage();
          // 递归查询
          doLoad(dataArrayResult, pageNum);
    }

    private List<T> doLoadDataArray(PageNum pageNum) {
        String url = xxxProperties.getHost()+ uri;
        Map<String, Object> param = new HashMap<>();
        param.put("pageNum", pageNum.getPageNum());
        param.put("pageSize", PAGE_SIZE);
        JSONArray dataArray = post(url,param);
        return dataArray.toJavaList(tClass);
    }
}
java 复制代码
public class PageNum {

    private int pageNum = 1;

    public int getPageNum() {
        return pageNum;
    }

    public void nextPage() {
        pageNum++;
    }
}
相关推荐
zww894911121 分钟前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设2 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳2 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
白山编程大哥2 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
devpotato2 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
xcl09252 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·spring boot·需求分析
Kyrie_kk3 小时前
Java--IO--Path文件访问
java·后端
qinqinzqq3 小时前
Maven POM 格式、Schema 与 XSD:一篇讲透
java·maven
o盟3 小时前
maven本地仓库有 总是去私仓中下载
java·maven·intellij-idea
devpotato3 小时前
Java 批量并发请求:从“能并发“到“结果按完成顺序可用“的三种写法与选型
java