# JAVA实现评论功能设计开发
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实现评论功能设计开发相关推荐
- Java+MySQL实现评论功能设计开发
Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...
- mysql制作评论功能_Java+MySQL实现评论功能设计开发
Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...
- 与Java相关的四十个名字-Java基础-Java-编程开发
<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...
- 基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java电影评论网站系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...
- facebook评论采集开发
facebook评论采集开发 facebook有复杂的请求机制,在实际开发爬虫的过程中非常的麻烦,对其http的构造,有N个动态参数,让人很难摸清,因此使用模拟的方式采集是很好的一个选择 在事先知道f ...
- Java 8 失宠!开发人员向 Java 11 转移...
以下文章来源方志朋的博客,回复"666"获面试宝典 作者:白开水 来源:OSC开源社区(ID:oschina2013) 此前的 Java 社区报告曾指出,Java 8 仍是开发人员 ...
- 《Java EE企业级应用开发》,《分布式爬虫》等书包邮送50本!企业开发利器!...
来给大家送一波福利,这次联系了10个好友一起给各位送书,每个号送 5 本,一共 50本,还包邮哦. 感谢传智播客对本次活动的赞助. 金主介绍:传智播客是国内数一数二的IT培训机构,现在关注传智播客 ...
- 慕课网_《Java微信公众号开发进阶》学习总结
时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...
- java微信公众号开发token验证失败的问题及解决办法
java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...
最新文章
- 类WebOS(添加了主界面,及相关功能代码)
- 学习方法之01高效学习方程式,你的学习到底是哪里出了问题
- 码农与UI沟通的日常
- 设置字段权限_命令行快速提示:权限进阶
- tensorflow之random_normal
- 源码安装MySQL步骤
- 查看游戏服务器ip地址网站,查看游戏服务器IP地址
- 【阮一峰ES6入门教程学习笔记】函数的扩展
- 算法之寻找完数(C语言)
- 软件测试之测试报告案例
- 车联网百家谈 | 从生物演化角度看自动驾驶发展路径
- VB操作IE浏览器完全控制
- java-net-php-python-jspm智守护学生健康管理系统软件设计与开发计算机毕业设计程序
- Cmn组合数c语言,计算并输出组合数Cmn……不会打……要求递归……谢谢
- 简七32堂极简理财课——模块三:日常理财,让你时时刻刻都有钱
- 导入sql文件报错:MySQL server has gone away 以及解决方法
- itunes无法安装到win7系统更新服务器,Win7旗舰版电脑无法安装itunes怎么办
- 华为P20无敌拍摄能力开放 如何即刻获得?
- 技术沙龙出海日本:分享京东区块链实践与创新
- objective-c 语法快速过(5)