文章目录

  • 新闻评论
    • 实体类
    • Controller层
    • Service层
    • 前端界面
  • 小结

新闻评论

实体类

@Entity
@Table(name = "t_comment")
public class Comment {@Id@GeneratedValueprivate Long id;private String nickname;private String email;private String content;private String avatar;@Temporal(TemporalType.TIMESTAMP)private Date createTime;@ManyToOneprivate News news;@OneToMany(mappedBy = "parentComment")private List<Comment> replyComments = new ArrayList<>();@ManyToOneprivate Comment parentComment;private boolean adminComment;public Comment() {}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getAvatar() {return avatar;}public void setAvatar(String avatar) {this.avatar = avatar;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public List<Comment> getReplyComments() {return replyComments;}public void setReplyComments(List<Comment> replyComments) {this.replyComments = replyComments;}public Comment getParentComment() {return parentComment;}public void setParentComment(Comment parentComment) {this.parentComment = parentComment;}public boolean isAdminComment() {return adminComment;}public void setAdminComment(boolean adminComment) {this.adminComment = adminComment;}public News getNews() {return news;}public void setNews(News news) {this.news = news;}@Overridepublic String toString() {return "Comment{" +"id=" + id +", nickname='" + nickname + '\'' +", email='" + email + '\'' +", content='" + content + '\'' +", avatar='" + avatar + '\'' +", createTime=" + createTime +", news=" + news +", replyComments=" + replyComments +", parentComment=" + parentComment +", adminComment=" + adminComment +'}';}
}

Controller层

@Controller
public class CommentController {@Autowiredprivate CommentService commentService;@PostMapping("/comments")public String save(Comment comment, HttpSession session){User user = (User)session.getAttribute("user");if(user==null){comment.setAdminComment(false);}else{comment.setAdminComment(true);}commentService.save(comment);Long newsId = comment.getNews().getId();return "redirect:/comments/"+newsId;}@RequestMapping("/comments/{newsId}")public String comments(@PathVariable Long newsId, Model model){List<Comment> comments = commentService.findCommentByNewsId(newsId);model.addAttribute("comments",comments);return "news::commentList";}
}

Service层

save()方法中:如果父评论id为-1(没有父评论),则将父评论id设为null。
通过消息的id来查找所有评论。

@Service
public class CommentServiceImpl implements CommentService {@Autowiredprivate CommentDao commentDao;@Overridepublic void save(Comment comment) {if(comment.getParentComment().getId()==-1){comment.setParentComment(null);}commentDao.save(comment);}@Overridepublic List<Comment> findCommentByNewsId(Long newsId) {Sort sort = Sort.by("createTime");List<Comment> comments = commentDao.findByNewsIdAndParentCommentNull(newsId,sort);return comments;}
}

前端界面

<div id="comment-form" class="ui form"><input type="hidden" name="news.id" th:value="${news.id}"><input type="hidden" name="parentComment.id" value="-1"><div class="field"><textarea name="content" placeholder="请输入评论信息..."></textarea></div><div class="fields"><div class="field m-mobile-wide m-margin-bottom-small"><div class="ui left icon input"><i class="user icon"></i><input type="text" name="nickname" placeholder="姓名" th:value="${session.user}!=null ? ${session.user.nickname}"></div></div><div class="field m-mobile-wide m-margin-bottom-small"><div class="ui left icon input"><i class="mail icon"></i><input type="text" name="email" placeholder="邮箱" th:value="${session.user}!=null ? ${session.user.email}"></div></div><div class="field  m-margin-bottom-small m-mobile-wide"><button id="commentpost-btn" type="button" class="ui teal button m-mobile-wide"><i class="edit icon"></i>发布</button></div>
</div>

小结

新闻评论功能实现后,TNews项目的基础功能已经完成,在迭代过程中,我能够清晰地感受到Spring Boot项目相较于SSM框架的简洁与方便,代码精简,框架自动生成,为Java项目开发带来了许多便利。在迭代的过程中,我已经基本熟悉了Spring Boot框架的原理与实现,收获满满。

【中软国际实习】Day 11:Spring Boot:TNews项目实现新闻评论相关推荐

  1. 我的中软国际实习Day16

    我的中软国际实习Day16 springcloude UserClient package com.zr.client;import com.zr.pojo.User; import org.spri ...

  2. 中软国际实习学习第九天

    中软国际实习学习第九.十天 第九天我们实现的是新闻系统的登录的功能,以及在登录功能中间添加一个过滤器 package com.zhongruan.entity;import javax.persist ...

  3. 中软国际实习 day10

    今天开始进行页面的设计,和其他成员讨论了数据库表的内容,建立了居民信息

  4. 中软国际实习 dzy15

    今天是最后一天,修改了几个js的引入方式,确保运行正常

  5. 谴责中软国际,特么的无耻。

    1,离职 =============================================================== 我7.10号向中软国际辞职.8.10号才放我离开(这个能理解) ...

  6. 中软国际携手深开鸿发布(1+1) x N 战略,以数字化、智慧化改变人类生产和生活方式

    2022开放原子全球开源峰会于7月27-29日在北京亦创会展中心正式召开,中软国际有限公司(以下简称"中软国际").深圳开鸿数字产业发展有限公司(以下简称"深开鸿&quo ...

  7. 中软干两年有用吗_在中软国际的两年,是我成长最快的阶段

    马上又临年关了,每年年底都是程序员最忙的时候,一个个项目接踵而来,真的是让人很抓狂了.前儿领导又安排下来一个系统开发的任务,说是客户特别着急,最好一个星期就要,可是要知道,系统开发并不是一个简简单单的 ...

  8. 中软国际赴黔参加大数据国际年会,规划产业布局

    美国将大数据提升为国家战略,我国虽没有明确提出,但我国政府对大数据的敏感度近几年来快速提升,国家多部委已联合发布措施鼓励大数据产业发展.贵州省经济和信息化委员会主任李保芳认为,大数据已成为新时代重要的 ...

  9. 中软国际java面试题及参考答案

    面试题是中软国际java个人求职者在面试过程中的敲门砖,以下是小编为大家收集到的,希望对大家有帮助! :填空题 1Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点 B ...

最新文章

  1. ASP.NET之父强烈推荐,无可争议的圣经级巨著
  2. 独家 | 手把手教你用Python构建你的第一个多标签图像分类模型(附案例)
  3. mysql 虚拟环境搭建_pycharm虚拟环境virtualnv安装MySQL扩展
  4. 2017 《Java技术预备作业》
  5. STM32 进阶教程 17 - ADC注入通道
  6. 在大数据里:Hadoop可能是你的救命稻草
  7. hust1344(阶层问题+暴力)
  8. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程
  9. java poi 打开 保存_Java-Apache POI-在DB中读取和存储RTF内容
  10. 窄脉冲matlab实现,[求助]如何获得与50Hz工频同步的窄脉冲信号
  11. 贪吃蛇游戏C语言源代码学习
  12. c语言最好的文本编辑器,【软件分享】两个小巧好用的C语言编辑器
  13. matlab两张图片显示,matlab怎么同时显示imshow 两幅图片
  14. Excel-数据透视表
  15. ESP32分区表图解
  16. python浪漫微信_教你用python做一个哄女友的微信自动回复机器人
  17. python验证角谷_角谷猜想-随心随性无为而为-51CTO博客
  18. 打印机服务器属性添加哪个文件,如何设置打印机服务器属性如何找到打印机服务器属性...
  19. 原始套接字编程——Teardrop
  20. android安装nodejs6,使用安卓手机搭建node-red

热门文章

  1. 个人车辆购置税税率是多少
  2. 最小可觉差(JND,Just Noticeable Difference)
  3. 中国人下的是中国象棋
  4. 超声波液位计——非接触式液位测量
  5. 什么pdf转Word转换器可以批量转换
  6. 2021.11.14 D20—自学vue,select下添加checkbox
  7. 工程项目管理与国际惯例接轨的几点思考(转)
  8. 神经机器翻译中的关键技术
  9. Emacs 是一台计算机
  10. 微信公众平台开发模板消息php,微信平台开发模板消息(php).pdf