您现在的位置是:首页 > 文章详情

关于递归调用,实现树形菜单的样式

日期:2018-09-20点击:314

一:需求

现有以需求就是把某一个帖子的全部评论展示出来。

二:分析

关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论。

三:思路

先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论。

四:编码

实体类:

 1 import java.util.Date;  2 import java.util.List;  3  4 import com.fasterxml.jackson.annotation.JsonFormat;  5  6 import lombok.Data;  7 @Data  8 public class BsChannelPostReply {  9 private long replyId; 10 private String niceName; 11 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 12 private Date replyDate; 13 private String content; 14 private long directRepliedId;//回复的直接评论的replyId 15 private List<BsChannelPostReply> children;//下面的子评论 16 }

获取主评论列表,和递归全部子评论:

 1 @Override  2 @Datasource(value="community")//切换数据源  3 public List<BsChannelPostReply> getMainReply(int postId) {  4 // TODO Auto-generated method stub  5 List<BsChannelPostReply> listMain=dao.getMainReply(postId);//获取主评论  6 if(listMain.size()>=0){//如果主评论不为空  7 for (BsChannelPostReply bsChannelPostReply : listMain) {  8 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//加载子评论  9  } 10  } 11 return listMain; 12  } 13 14  @Override 15 @Datasource(value="community")//切换数据源 16 public List<BsChannelPostReply> getMainReplyChildren(long replyId) { 17 // TODO Auto-generated method stub 18 List<BsChannelPostReply> listChildren=dao.getMainReplyChildren(replyId);//根据当前的replayId获取当前级子评论列表 19 if(listChildren.size()>=0){ 20 for (BsChannelPostReply bsChannelPostReply : listChildren) { 21 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//在判断当前子评论是否还有子评论,递归调用,直到没有子评论 22  } 23  } 24 return listChildren; 25 }

 

五:效果

根据这样的递归调用就可以实现理论上的获取无极限的子评论列表。

 

欢迎大家一起说出自己的想法。
原文链接:https://yq.aliyun.com/articles/643514
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章