返回

经营信息字段回显功能:用map优化多余for循环,查询数据库一步到位,减少对同一张表数据字典用户表的多次查询。

发布时间:2022-09-26 15:53:22 348
# 数据库# 数据# 信息

经营信息字段回显功能:用map优化多余for循环,查询数据库一步到位,减少对同一张表数据字典用户表的多次查询。
直接组装所有数据字典为map,包括Map<String, List>, Map<String, SysDataUserDict> allDataMap,map可以考虑用TreeMap, LinkedHashMap, HashMap

1、抽出集合list到某一个字段list

 List secondList = userDictGroupMap.get(sysDataUserDict.getDataKey());
List collect = new LinkedList<>();
if (CollectionUtil.isNotEmpty(secondList)) {
collect = secondList.stream().map(SysDataUserDict::getDataKey).collect(Collectors.toList());
}

2、详细代码

 CollectionItemContentResp operationResp = new CollectionItemContentResp();
operationResp.setDataKey(CollectShopConstant.COLLECT_SHOP_OPERATION);
operationResp.setDataText(CollectShopConstant.COLLECT_SHOP_OPERATION_TEXT);
Map<String, List> userDictGroupMap =
sysDataUserDictRemoteService.getDataGroupByMerchantId(configReq.getMerchantId()).getData();
//一级
List firstList = userDictGroupMap.get(CollectShopConstant.COLLECT_SHOP_OPERATION);
List operationList = new LinkedList<>();
if (CollectionUtil.isNotEmpty(firstList)) {
firstList.forEach(sysDataUserDict -> {
//二级
List secondList = userDictGroupMap.get(sysDataUserDict.getDataKey());
List collect = new LinkedList<>();
if (CollectionUtil.isNotEmpty(secondList)) {
collect = secondList.stream().map(SysDataUserDict::getDataKey).collect(Collectors.toList());
}
operationList.addAll(collect);
});
}
//所有data_key SysDataUserDict
Map<String, SysDataUserDict> allDataMap =
sysDataUserDictRemoteService.getMerchantDictMap(configReq.getMerchantId()).getData();
List child = new LinkedList<>();
if (CollectionUtil.isNotEmpty(operationList)) {
operationList.forEach(operation -> {
SysDataUserDict sysDataUserDict = allDataMap.get(operation);
CollectionItemContentResp collectionItemContentResp = new CollectionItemContentResp();
BeanUtils.copyProperties(sysDataUserDict, collectionItemContentResp);
child.add(collectionItemContentResp);
});
}
operationResp.setChild(child);
if(CollectionUtil.isNotEmpty(child)) {
modelProperty.add(operationResp);
}

3、如果要用其它表,改起来很快的

//加上经营信息
CollectionItemContentResp operationResp = new CollectionItemContentResp();
operationResp.setDataKey(CollectShopConstant.COLLECT_SHOP_OPERATION);
operationResp.setDataText(CollectShopConstant.COLLECT_SHOP_OPERATION_TEXT);
Map<String, List> userDictGroupMap = sysDictDataUtils.getGroupDataMap();
// 一级
List firstList = userDictGroupMap.get(CollectShopConstant.COLLECT_SHOP_OPERATION);
List operationList = new LinkedList<>();
if (CollectionUtil.isNotEmpty(firstList)) {
firstList.forEach(sysDataUserDict -> {
// 二级
List secondList = userDictGroupMap.get(sysDataUserDict.getDataKey());
List collect = new LinkedList<>();
if (CollectionUtil.isNotEmpty(secondList)) {
collect = secondList.stream().map(SysDataDict::getDataKey).collect(Collectors.toList());
}
operationList.addAll(collect);
});
}
// 所有data_key
Map<String, SysDataDict> allDataMap = sysDictDataUtils.getAllDataMap();
List child = new LinkedList<>();
if (CollectionUtil.isNotEmpty(operationList)) {
operationList.forEach(operation -> {
SysDataDict sysDataUserDict = allDataMap.get(operation);
CollectionItemContentResp collectionItemContentResp = new CollectionItemContentResp();
BeanUtils.copyProperties(sysDataUserDict, collectionItemContentResp);
collectionItemContentResp.setDataType(sysDataUserDict.getDictType());
child.add(collectionItemContentResp);
});
}
operationResp.setChild(child);
if(CollectionUtil.isNotEmpty(child)) {
modelProperty.add(operationResp);
}

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线