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

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

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++;
    }
}
相关推荐
默默coding的程序猿17 分钟前
3.前端和后端参数不一致,后端接不到数据的解决方案
java·前端·spring·ssm·springboot·idea·springcloud
在未来等你30 分钟前
JVM调优实战 Day 15:云原生环境下的JVM配置
java·jvm·性能优化·虚拟机·调优
funnycoffee12331 分钟前
Huawei 6730 Switch software upgrade example版本升级
java·前端·华为
Java初学者小白32 分钟前
秋招Day15 - Redis - 缓存设计
java·数据库·redis·缓存
缘来是庄32 分钟前
设计模式之组合模式
java·设计模式·组合模式
DKPT34 分钟前
Java组合模式实现方式与测试方法
java·笔记·学习·设计模式·组合模式
G探险者1 小时前
《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
java·开发语言·rpc
刘大猫261 小时前
Datax安装及基本使用
java·人工智能·算法
Kyrie_Li1 小时前
(十五)Spring Test
java·后端·spring
马里奥Mario1 小时前
拯救被日志拖垮的线程池:Logback异步化改造实战
java