9_帖子详情

帖子详细页面设计到两张表如下

用户表 (user)用于展示用户的信息 和 discuss_post(帖子表) 用于展示点击某一个帖子时的详细信息

字段备注
id帖子id
user_id用户id
title帖子的标题
content帖子的内容
type帖子类型(0–普通帖子 1–置顶)
status帖子状态(0–正常帖子 1–精华帖子 2–拉黑帖子)
create_time帖子发布时间
comment_count帖子的评论数量
score

本节中的实现功能如下,帖子详情页面的的开发相对来说比较容易,没有涉及到新的知识点。

image-20221008114554151

  1. 首先从DiscussPostMapper开始写

先分析一下帖子的详情页面需要展示哪些内容,需要查询的表为 discuss_post表和user

分别查询两张表

  • 需要注意的是根据 discuss_post的id进行查询,也就是用户点击的帖子
  • 将用户点击的帖子的id传到请求页,来确定帖子通过数据库的查询获得帖子的详细信息
  • 通过点击帖子的id查询发布帖子的用户
  1. dao的代码,在discussPostMapper接口中书写如下代码
查询帖子的信息
DiscussPost getDisPostById(int id);
查询发布帖子的用户信息
User getUserByDisPostId(int id);    

sql代码(注意:sql代码可以通过注解的方式写在discussPostMapper接口中方法的上面,也可以写在 DoscussPostMapper.xml文件)

select * from discuss_post where id = #{id};
select * from user where id = #{id};
  1. serice层

    业务层目前没有涉及到较为复杂的业务,主要是以查询dao为主

@Override
public DiscussPost getDisPostById(int id) {
    return discussPostMapper.getDisPostById(id);
}


@Override
public User getUserByDisPostId(int id) {
    return discussPostMapper.getUserByDisPostId(id);
}
  1. cotroller

接收前端传过来的id,并通过Model对象将查询的数据返回给页面。目前还没有涉及到帖子的回复查询,后面涉及到了再在后面添加。

 /**
     * 前往帖子详情页面
     * @return
     */
    @GetMapping("/discussDetailPage")
    public String getDiscussDetailPage(Model model,@RequestParam("id") int id){
        logger.debug("id是:{}",id);
        DiscussPost post = postService.getDisPostById(id);
        model.addAttribute("post",post);
        User user = postService.getUserByDisPostId(post.getUserId());
        model.addAttribute("user",user);
        return "site/discuss-detail";
    }
  1. 前端页面

前端页面将发贴人的头像名称,发布时间以及帖子的标题等信息通过模板的方式进行展示

技术要点

对于前端跳转路径有两种方式

  • 方式一

前端使用 a标签跳转到详情页面需要携带数据时

<a th:href="@{/discuss/discussDetailPage(id=${item.post.id})}" /></a>

此时后端的接收方式

 @GetMapping("/discussDetailPage")
    public String getDiscussDetailPage(Model model,@RequestParam("id") int id){}
  • 方式二

前端通过使用||符号,在子该符号中的${}中括号的内容为变量,其它内容为常量。

<a th:href="@{|/discuss/detail/${item.post.id}|}"></a>

后端需要通过@PathVariable注解的方式接收前端传过来的参数。

 @GetMapping("/discussDetailPage/{id}")
    public String getDiscussDetailPage(Model model,@PathVariable("id") int id){}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莪假裝堅強

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值