常用的批量读取数据库数据插入

//第一种while方法
@Resoure
private ProxyClient proxyClient;

public ApiResult<?> addBatch(QueryParam queryParam){
   queryParam.setPageNum(0);
   queryParam.setPageSize(1000);
   while(true){
      pageNum++;
      logger.info("开始查询第{}页数据。",pageNum);
     ApiResult<PageVO<DepositResp>> apiResult = proxyClient.getSearchData(queryParam);
     if(!apiResult.isSuccess()){
        logger.error("查询第{}页失败,错误信息{}",pageNum,apiResult.getMessage());
     }
     PageVO<UserResp> pageVo=Convert.convert(new TypeReference<PageVo<UserResp>>(){},JSONUtil.parseObj(apiResult.getData()));
     List<User> rows=pageVo.getRows();
     if(ObjectUtils.isEmpty(rows)){
        logger.info("查询第{}页完成,",pageNum)
        return ApiResult.ok();
     }
     logger.info("查询第{}页,",pageNum);
    List<User> list= JSONUtil.parseArray(rows).toList(User.class);
    //开始批量插入数据
   }
}
//第二种方式
@Resoure
private ProxyClient proxyClient;

public ApiResult<?> addBatch(QueryParam queryParam){
    int total=1;
    int pageSize=1000;
    queryParam.setPageSize(pageSize);
    for(int i=1;i<=total;i++){
        queryParam.setPageNum(i);
        ApiResult<PageVO<DepositResp>> apiResult = proxyClient.getSearchData(queryParam);
        if(!apiResult.isSuccess()){
        logger.error("查询第{}页失败,错误信息{}",i,apiResult.getMessage());
        JSONObject jsonobject=JSONUtil.parseObj(apiResult.getData());
        if(i=1){
           //计算出总页数
          total=(Integer.parseInt(jsonObject.get("total").toString())+pageSize-1)/pageSize;
         List<UserEntity> rows=JSONUtil.parseArray(jsonObject.get("rows")).toList(UserEntity.class) ;
         //添加数据 
        }
     }
    }
}
public ApiResult addBatch(PromotionPageQuery promotionPageQuery) {
    //初始化当前页、总条数
    int total = 0;
    int pageSize = page_size;
    promotionPageQuery.setPageSize(pageSize);
    List<PromotionEntity> batchList = new ArrayList<>();
    while (true) {
        total++;
        promotionPageQuery.setPageNum(total);
        try {
            ApiResult apiResult = proxyClient.getPromotion(promotionPageQuery);
            if (!apiResult.isSuccess()) {
                log.error("查询错误信息:{}", apiResult.getMessage());
                return ApiResult.fail(apiResult.getMessage());
            }
            JSONObject jsonObject = JSONUtil.parseObj(apiResult.getData());
            batchList = JSONUtil.parseArray(jsonObject.get("rows")).toList(PromotionEntity.class);
            if (CollectionUtil.isEmpty(batchList)) {
                log.info("查询数据第{}页没有数据,正常结束。", total);
                return ApiResult.ok("批量插入成功");
            }
            log.info("开始写入第{}页数据", total);
            promotionMapper.saveBatchPromotion(batchList);
            batchList.clear();
        } catch (Exception e) {
            log.error("{}批次插入失败",total);
            break;
        }
    }
    return ApiResult.ok("写入数据成功第{}页",total);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值