很多时候我们数据库存储的是树形的数据,根据 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.测试用例跑一下看下,结果是否正确。这边就不贴图了,大家可以自己试下