关于数据库表多层级关系的认识
程序员文章站
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);
}
}