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

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

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++;
    }
}
相关推荐
春天的菠菜19 小时前
【私服】一步部署 Docker 私服
java·docker·容器
有味道的男人19 小时前
1688 跨境 API:多语言、跨境代采、独立站商品同步方案
java·服务器·前端
兩尛19 小时前
C++多线程,并发
java·开发语言
逆境不可逃20 小时前
Hello-Agents 第二部分-第六章:框架开发实践
java·人工智能·分布式·学习·架构·rabbitmq
我不是8神20 小时前
面试题:Gorutine泄露的条件有哪些?
java·开发语言
爱好物理的一名程序员XiaoK20 小时前
搭建网站时遇到的只显示空白界面
java
AC赳赳老秦20 小时前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
吴声子夜歌20 小时前
状态机——枚举实现简单状态机
java·枚举·状态机
Rick199320 小时前
【无标题】
java
yoyo_zzm20 小时前
四大编程技术对比:PHP、Java、Python与HTML
java·python·php