JAVA实现评论功能设计开发

实现类似微信朋友圈的评论楼层

思路:

1、嵌套型的评论方式所需要的数据结构是树状型的,评论多起来的话层级结构会变得很复杂

实现原理为在评论表之中添加一个【parent_id】字段,定义评论和回复为父子级的关系,评论为父级,回复为子级,默认为【0】,表示为没有父级

create table `comment` (`id` int(11) not null auto_increment comment '主键id',`nickname` varchar(255) default null comment '评论者昵称',`avatar` varchar(255) comment '评论头像',`content` varchar(255) default null comment '评论的内容',`blog_id` int(11) default null comment '评论的博客id',`parent_id` int(11) default '-1' comment '父级评论id',primary key (`id`)) comment '评论表';

DTO 设计如下:

public class CommentDetailsDto implements Serializable {@ApiModelProperty("id")private Long id;@ApiModelProperty("上级评论id")private Long pid;@ApiModelProperty("上级评论名称")private String repliedName;@ApiModelProperty("评论用户id")private Long userId;@ApiModelProperty("用户头像")private String userPicture;@ApiModelProperty("子回复")private List<CommentDetailsDto> commentDetailsListChild;
}

2、需要使用stream流的groupingBy工具,将查出来的所有评论根据parent_id进行分组,生成一个以parent_id作为Key,评论记录集合为value的map结构

​ 循环遍历评论记录,根据Id去map集合中去查找相关子回复List集合,如果没有则设置为null

    list = commentDetailsRepository.list(map);List<CommentDetailsDto> commentDetailsDtos = CommentDetails.fromModelList(list);if (CollectionUtils.isNotEmpty(commentDetailsDtos)) {Map<Long, List<CommentDetailsDto>> zoneByParentIdMap = commentDetailsDtos.stream().collect(Collectors.groupingBy(CommentDetailsDto::getPid));commentDetailsDtos.forEach(regionTree -> {regionTree.setCommentDetailsListChild(zoneByParentIdMap.get(regionTree.getId()));CommentDetails commentDetails = commentDetailsRepository.findById(regionTree.getPid());if (CollectionUtils.isEmpty(regionTree.getCommentDetailsListChild())){regionTree.setCommentDetailsListChild(new ArrayList<>());}});commentDetailsDtos = commentDetailsDtos.stream().filter(v -> v.getPid() == 0).collect(Collectors.toList());}

3、前端可通过控件对该List集合树结构进行解析,效果如下:

# JAVA实现评论功能设计开发相关推荐

  1. Java+MySQL实现评论功能设计开发

    Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...

  2. mysql制作评论功能_Java+MySQL实现评论功能设计开发

    Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...

  3. 与Java相关的四十个名字-Java基础-Java-编程开发

    <script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...

  4. 基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

  5. facebook评论采集开发

    facebook评论采集开发 facebook有复杂的请求机制,在实际开发爬虫的过程中非常的麻烦,对其http的构造,有N个动态参数,让人很难摸清,因此使用模拟的方式采集是很好的一个选择 在事先知道f ...

  6. Java 8 失宠!开发人员向 Java 11 转移...

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者:白开水 来源:OSC开源社区(ID:oschina2013) 此前的 Java 社区报告曾指出,Java 8 仍是开发人员 ...

  7. 《Java EE企业级应用开发》,《分布式爬虫》等书包邮送50本!企业开发利器!...

    来给大家送一波福利,这次联系了10个好友一起给各位送书,每个号送 5 本,一共 50本,还包邮哦. 感谢传智播客对本次活动的赞助.   金主介绍:传智播客是国内数一数二的IT培训机构,现在关注传智播客 ...

  8. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  9. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

最新文章

  1. 类WebOS(添加了主界面,及相关功能代码)
  2. 学习方法之01高效学习方程式,你的学习到底是哪里出了问题
  3. 码农与UI沟通的日常
  4. 设置字段权限_命令行快速提示:权限进阶
  5. tensorflow之random_normal
  6. 源码安装MySQL步骤
  7. 查看游戏服务器ip地址网站,查看游戏服务器IP地址
  8. 【阮一峰ES6入门教程学习笔记】函数的扩展
  9. 算法之寻找完数(C语言)
  10. 软件测试之测试报告案例
  11. 车联网百家谈 | 从生物演化角度看自动驾驶发展路径
  12. VB操作IE浏览器完全控制
  13. java-net-php-python-jspm智守护学生健康管理系统软件设计与开发计算机毕业设计程序
  14. Cmn组合数c语言,计算并输出组合数Cmn……不会打……要求递归……谢谢
  15. 简七32堂极简理财课——模块三:日常理财,让你时时刻刻都有钱
  16. 导入sql文件报错:MySQL server has gone away 以及解决方法
  17. itunes无法安装到win7系统更新服务器,Win7旗舰版电脑无法安装itunes怎么办
  18. 华为P20无敌拍摄能力开放 如何即刻获得?
  19. 技术沙龙出海日本:分享京东区块链实践与创新
  20. objective-c 语法快速过(5)

热门文章

  1. 前端开发者应该知道的 Centos/Docker/Nginx/Node/Jenkins 操作
  2. 4、51单片机——LCD1602 驱动(郭天祥)
  3. 蓝牙a2dp协议源码分析
  4. 【毕业设计选题】2022通信工程毕业设计题目推荐大全
  5. 物联网工程毕业设计选题推荐
  6. R中常用统计指标含义
  7. Data-driven methods for solving algebra word problems论文阅读
  8. STM32的频率和占空比计算
  9. pwm一个时间单位_详解PWM原理、频率与占空比
  10. openwrt配置doh