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

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

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++;
    }
}
相关推荐
xlxxy_4 分钟前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
栋***t15 分钟前
从“工具”到“基建”,麦塔在线考试系统经历的时代变局与定位逻辑
java·大数据·数据库·开源软件·无纸化
薛定猫AI26 分钟前
【技术干货】大模型文档结构化提取实战:Python解析PDF发票并批量生成CSV
java·python·pdf
咖啡八杯39 分钟前
GoF设计模式——状态模式
java·面试·架构
荣码42 分钟前
Prompt工程实战:同一个需求换3种写法,效果差10倍
java·python
weixin_422329311 小时前
AgentScope Java ReActAgent 核心循环深度解析
java·开发语言·人工智能
952361 小时前
RabbitMQ - 高级特性
java·spring boot·分布式·后端·rabbitmq
尽兴-1 小时前
传统 Java/Vue 系统如何一步步接入 AI 维护
java·vue.js·人工智能·ai·大模型
shuoshuohaohao1 小时前
《HTTP协议》
java·web
zzz_23681 小时前
【Java实习面试算法冲刺】图论
java·算法·面试