减少循环内访问DB,提高代码性能

发布时间 2023-08-02 11:25:15作者: 繁星学习中心

当需要利用列表内数据查询数据库时,可以把数据全部查出,在进行分组取值

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()));
        }