减少循环内访问DB,提高代码性能
当需要利用列表内数据查询数据库时,可以把数据全部查出,在进行分组取值
1.这种写法利用的就是循环访问数据库,当数据量很大的时候,查询速度就会减低
2.改修方法:将数据全部取出在进行分组赋值,一次访问数据库就可以实现上述功能
3.完整改修代码
List<ProductTypeManage> queryProductList = productTypeManageMapper.queryPageList(productTypeManage, pageSize, skipCount); /*查询商品分类子节点信息*/ List<ProductTypeManage> childrenList = productTypeManageMapper .selectList(new LambdaQueryWrapper<ProductTypeManage>().ne(ProductTypeManage::getPid, SystemCommonConstant.isFatherNode.IS_PARENT)); /*根据pid进行分组*/ Map<String, List<ProductTypeManage>> childrenMap = childrenList.stream().collect(Collectors.groupingBy(ProductTypeManage::getPid)); /*设置商品分类子节点信息*/ for (ProductTypeManage productTypeList : queryProductList) { productTypeList.setChildren(childrenMap.getOrDefault(productTypeList.getId(), Collections.emptyList())); }