代码实现查询树形数据

很多时候我们数据库存储的是树形的数据,根据 parent_id 关联,那么怎么以树形的形式查询出展现在页面上呢,特别是在处理菜单或是评论的时候会遇到这种情况。

下面以评论为例:

1、首先查询出符合条件的集合(简单的查询即可) commentList 

2、循环集合分组数据

// 完善评论信息
//所有的评论集合--数据库查询出的集合
List<Comment> allList = new ArrayList<>();
//最终的树形评论集合
List<Comment> commentList = new ArrayList<>();
//子评论集合(parentId 不为空)
List<Comment> childList = new ArrayList<>();
for(Comment comment : allList ) {
    if(comment.getParentId() == null) {
        //一级评论
        commentList.add(comment);
    } else {
        childList.add(comment);
    }
}

3.循环子评论和所有评论集合,直接看代码

for(Comment comment : childList) {
    for(Comment parent : allList) {
        if(comment.getParentId().equals(parent.getId())) {
            if(parent.getChildList() == null) {
                parent.setChildList(new ArrayList<Comment>());
            }
            parent.getChildList().add(comment);
            break;
        }
    }
}

这样就可以commentList就组装成了树形结构。

4.测试用例跑一下看下,结果是否正确。这边就不贴图了,大家可以自己试下

猜你喜欢

转载自blog.csdn.net/HXNLYW/article/details/80812336