效果图:
数据库设计
实体类:
@Data
@EqualsAndHashCode(callSuper = false)
public class Comment implements Serializable {
private static final long serialVersionUID = 1L;
private Integer commentId; //评论的ID
private String content;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private Integer userId;
private Integer infoId;
private Integer parentId;
private String truename;
private String replyName; //回复目标名字
private String headImgUrl;
private Integer replyUserId;
private List<User> users;
List<Comment> child; //回复或者子评论
}
服务层:(有参考,由于搜了好多,忘记参考哪位大神的了,抱歉!!!)
public List<Comment> getComments(Integer infoId){
//找到所有评论
List<Comment> allcomments=commentMapper.getComments(infoId);
//为空,new一个
if(allcomments==null||allcomments.size()==0){
return new ArrayList<>();
}
List<Comment> comments=new ArrayList<>();
List<Comment> parents=new ArrayList<>();
//遍历评论
for(Comment comment : allcomments){
//是否为父评论
if(comment.getParentId()==null){
comments.add(comment);
parents.add(comment);
}else {
boolean foundParent=false;
//找出replyuserid对应的用户信息
User user=userMapper.getUserById(comment.getReplyUserId());
//把名字赋予
comment.setReplyName(user.getTruename());
for(Comment parent : parents){
if (comment.getParentId()==parent.getCommentId()){
if (parent.getChild()==null){
parent.setChild(new ArrayList<>());
}
parent.getChild().add(comment);
parents.add(comment);
foundParent=true;
break;
}
}
}
}
return comments;
}
thymeleaf前端: