不看父了,从子看
1、先得到老子和新子的id对应关系
private Map insertBatchIdx(Map newRuleMap, List oldRuleIdxList) {
Map newRuleIdxMap = new HashMap<>();
for (AssessRulesIdxDO assessRulesIdxDO : oldRuleIdxList) {
Long oldIdxId = assessRulesIdxDO.getId();
assessRulesIdxDO.setId(null);
assessRulesIdxDO.setAssessRulesId(newRuleMap.get(assessRulesIdxDO.getAssessRulesId()));
assessRulesIdxMapper.insert(assessRulesIdxDO);
newRuleIdxMap.put(oldIdxId,Long.valueOf(assessRulesIdxDO.getId()));
}
return newRuleIdxMap;
}
2、查出所有的老孙子,根据对应关系设置成新子的idxId,然后一次性批量插入新孙子
for (Map.Entry> longListEntry : radioMap.entrySet()) {
List value = longListEntry.getValue();
for (AssessRulesDcpRatioDO assessRulesDcpRatioDO : value) {
assessRulesDcpRatioDO.setId(null);
assessRulesDcpRatioDO.setAssessRulesIdxId(newRuleIdxMap.get(assessRulesDcpRatioDO.getAssessRulesIdxId()));
rotioList.add(assessRulesDcpRatioDO);
}
}
if(CollUtil.isNotEmpty(rotioList)) {
List> partitionList = Lists.partition(rotioList, IndexConstants.BATCH_SIZE);
for (List ratioDOS : partitionList) {
assessRulesDcpRatioMapper.insertList(ratioDOS);
}
}