介绍
这期内容当中小编将会给大家带来有关使用Java语言如何实现评论回复功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>一、分类方式强>
<强> 1,单一型强>
单一型评论方式就是日常论坛之中的盖楼的方式
用户只能根据所在的文章或者问题进行单一回复,评论之间没有互动
类似于问答形式。提出问题,然后回答,一对多关系。这些回答之间没有任何联系
<强> 2,嵌套型强>
嵌套型评论方式会对有回复的评论进行递归,会造成后端性能不佳,而且对于前端的展示也不是很友好
<强> 3,两层型强>
两层型评论方式就是除了一级评论之外,无论是对于该评论的回复还是对于回复的回复都统一在第二层
就以最常见的博客来说,不同的分类方式实现原理不一样
<强> 1,单一型强>
我们只需要在评论的数据表格中添加博客id即可,查询出相对应的数据直接进行展示即可
select *从评论blog_id=# {blog_id}
<强> 2,嵌套型强>
嵌套型的评论方式所需要的数据结构是树状型的,评论多起来的话层级结构会变得很复杂,对于性能消耗也是很巨大,【不推荐】
实现原理为我们会在评论表之中添加一个【parent_id】字段,定义评论和回复为父子级的关系,评论为父级,回复为子级,默认为【1】,表示为没有父级,
创建表“评论”( “id”int (11) not null auto_increment评论& # 39;主键id # 39;, “昵称”varchar(255)默认空评论& # 39;评论者昵称& # 39;, 《阿凡达》varchar(255)评论& # 39;评论头像& # 39;, “内容”varchar(255)默认空评论& # 39;评论的内容& # 39;, blog_id int(11)默认空评论& # 39;评论的博客id # 39;, parent_id int(11)默认& # 39;1 & # 39;评论& # 39;父级评论id # 39;, 主键(“id”) )评论& # 39;评论表& # 39;;
需要使用递归和链表进行循环遍历插入回复
设计如下:
内容。java
私有静态最终长serialVersionUID l=1; @ApiModelProperty(值=https://www.yisu.com/zixun/敝骷黫d”) @TableId (value=" id ",输入=IdType.ASSIGN_ID) 私人整数id; @ApiModelProperty (value="用户昵称”) @TableField(“昵称”) 私人字符串昵称; @ApiModelProperty (value="头像”) @TableField(《阿凡达》) 私人字符串《阿凡达》; @ApiModelProperty (value="评论”) @TableField(“评论”) 私人字符串评论; @ApiModelProperty (value="博客id”) @TableField (“blog_id”) 私人整数看; @ApiModelProperty (value="回复评论id”) @TableField (“parent_id”) 私人整数parentId;
DTO设计
ContentDTO。java
@ data @NoArgsConstructor @AllArgsConstructor @Accessors(链=true) @ApiModel(值=https://www.yisu.com/zixun/逼缆勰P汀? @JsonIgnoreProperties(值={“处理器”}) 公开课ContentDTO { 私人int id; 私人字符串昵称; 私人字符串内容; 私人列表孩子; }
使用mybatis做为持久层框架,编写sql查询语句进行嵌套查询,
& lt; resultMap id=癱ommentDTOMap"类型=癱om.zukxu.items.comment.entity.ContentDTO"比; & lt; id属性=癷d"列=癱omment_id"祝辞& lt;/id> & lt;结果属性=皀ickname"列=皀ickname"祝辞& lt;/result> & lt;结果属性=癱ontent"列=癱ontent"祝辞& lt;/result> & lt;协会财产=癱hildren" 选择=癱om.zukxu.items.comment.mapper.ContentMapper.selectCommentById"列=皗看=blog_id parentId=comment_id}“; fetchType=發azy"比; & lt;/association> & lt;/resultMap> & lt;选择id=皊electCommentById"resultMap=癱ommentDTOMap"比; 选择comment_id,昵称,内容、blog_id parent_id从博客blog_id=#{看}和parent_id=# {parentId} & lt;/select>使用Java语言如何实现评论回复功能