需求介绍
熟悉事务管理,并且应用到添加评论的功能。
数据层:增加评论数据,修改帖子的评论数量
业务层:处理添加评论的业务,先增加评论再更新帖子的评论数量(因为用到了两个DML操作所以要用到事务管理)
表现层:处理添加评论数据的请求,设置添加评论的表单
代码实现
首先模拟某一个业务,利用事务实现,首先我们要确定我们的业务要写在 Service 业务层,所以在 AlphaService 文件里面编写,我们先考虑一个事务,比方说我们注册一个用户增加一个 user,并且自动的用这个 user 的账号发个帖。那么这一个业务包含两个增加操作。
1 | // 因为涉及到用户和帖子把这两个 mapper 注入进来 |
然后新建一个测试类,测试我们的方法。
1 | package com.nowcoder.community; |
结果会报错,查数据库我们也会看到这个数据是没有插到数据库里面。
事务管理熟悉了之后,我们开发添加评论的需求。
先在数据层 CommentMapper 写 insertComment 方法增加评论数据
1 | int insertComment(Comment comment); |
然后去 comment-mapper.xml 写具体实现
1 | <sql id="insertFields"> |
然后写更新帖子评论数量的 sql 语句,在 DiscussPostMapper 里面增加 updateCommentCount 方法
1 | int updateCommentCount(int id, int commentCount); |
在 discusspost-mapper.xml 里面写实现
1 | <update id="updateCommentCount"> |
至此数据层就结束了,去开发业务层。
首先我们帖子的业务组件 DiscussPostService 中增加一个方法 updateCommentCount 更新帖子数量,使得在开发评论的时候可以依赖这个业务组件
1 | public int updateCommentCount(int id, int commentCount) { |
然后在 CommentService 里面增加处理添加评论的业务方法 addComment 了
1 | // 因为要使用敏感词过滤把该工具注入进来 |
业务方法解决,最后去表现层 CommentController 里写 addComment 方法:
1 | package com.nowcoder.community.controller; |
最后就是处理页面了。