现在有这么个业务场景,我们有大批量数据要从第三方系统拉取过来,一次性拉取肯定不太现实,我们只有分页来拉取,然后把数据全部拉取过来放到集合中,然后统一采用对应跨框架批量插入进去。
上代码:
try {
int pageNumber = 1;
int pageSize = 100;
//定义一个集合存放所有便利数据
List<AttMnpdNormSpil> insertList = new ArrayList<>();
//准备数据(获取表中所有的主键id)
//List<String> syncedList = attMnpdNormSpilService.getList().stream().map(AttMnpdNormSpil::getId).collect(Collectors.toList());
while (true) {
ResponseMessage message = WaterManageClientUtils.listStations(accessTokenUtils.getAccessToken(), pageNumber, pageSize, WaterMangeUrlConfig.attMnpdNormSpil);
System.out.println(message.toString());
JSONObject jsonObj = (JSONObject) JSON.toJSON(message.getMessage());
PageAttMnpdNormSpilVO pageAttMnpdNormSpilVO = JSONObject.toJavaObject(jsonObj, PageAttMnpdNormSpilVO.class);
System.out.println(pageAttMnpdNormSpilVO);
if (pageAttMnpdNormSpilVO == null) {
break;
}
List<AttMnpdNormSpil> rows = pageAttMnpdNormSpilVO.getRows();
// List<AttMnpdNormSpil> attMnpdNormSpil = rows.stream().filter(item -> !syncedList.contains(item.getId())).collect(Collectors.toList());
insertList.addAll(rows);
if (rows.size() < pageSize) {
break;
}
pageNumber ++;
}
if (CollectionUtils.isNotEmpty(insertList)) {
attMnpdNormSpilService.add(insertList);
}
}catch (Exception ex){
logger.error("同步数据异常", ex);
responseMessage.setStatus(-1);
responseMessage.setMessage("同步数据异常" + ex.getMessage());
}