欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于数据库表多层级关系的认识

程序员文章站 2022-07-01 08:32:25
...

无非是通过,parent_id和level两个字段来控制层级关系,通过遍历的方式取值

这是我自己写的一套循环

 public List<ItemCat> findItemCatList(Integer level) {
        //所有层级的数据
        ArrayList<List<ItemCat>> levelList = new ArrayList<>();
        for (int i = 1; i <= level; i++) {
            List<ItemCat> itemCats = itemCatMapper.selectList(
                    new QueryWrapper<ItemCat>()
                            .eq("level", i)
            );
            levelList.add(itemCats);
        }

        //遍历每一层,除了最后一层
        levelList.forEach((levelItems)->{
            //当前级别
            Integer currentLevel = levelItems.get(0).getLevel();
            if(currentLevel == level) return;
            //下一层
            List<ItemCat> nextLevel = levelList.get(currentLevel);
            //当前层,遍历获取
            levelItems.forEach((current)->{
                //存所有的儿子
                ArrayList<ItemCat> childrenItemCats = new ArrayList<>();
                nextLevel.forEach((nextCurrent)->{
                    if(nextCurrent.getParentId() == current.getId())
                        childrenItemCats.add(nextCurrent);
                });
                //设置儿子
                current.setChildren(childrenItemCats);
            });
        });
        return levelList.get(0);
    }
}

相关标签: 数据库架构