项目首页

分两步:

  1. 开发首页,显示前十帖子;
  2. 开发分页,分页显示所有。

开发首页

开发顺序:DAO -> Service -> Controller

DAO(建表、实体类、Mapper 接口、Mapper 映射文件)

  1. 建表:讨论贴

    在这里插入图片描述

    content:帖子内容,不知道最大长度,故用 text 类型。

    char:长度固定,适用身份证、手机号码等定长属性;

    varchar:可变长度,可设置最大长度,适用长度可变的属性;

    text:不设置长度,适用不知道属性最大长度时;

    查询速度:char > varchar > text。

    comment_count:指评论数量,做冗余存储,以减少对评论表频繁的查询,提高效率。

    score :帖子分数,用来给帖子进行热度排名。

    Q:user_id 为 varchar,对应实体属性 userId 为 int,user 表 id 为 int

  2. 建实体类

    public class DiscussPost {
         
    	// 表中用text类型
        private String content;
        // 其他属性,get、set,toString
    }
    
  3. 建 Mapper 接口

    @Mapper
    @Repository
    public interface DiscussPostMapper {
         
        // “首页讨论贴”和“我的帖子”共同该方法,对应的 sql 是动态的:
        // 当 userId 为 0 时,不拼入 sql 中,查询的是“首页讨论贴”;否则拼入,查询“我的帖子”。
        // offset、limit:用于分页,offset:每页起始行行号,limit:每页最多显示多少数据。
        List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit);
        
        // 查询帖子总数,用于后续计算分页数(总贴数/每页数),对应的 sql 也是动态的;
        // 当 userId 为 0 时,不拼入 sql 中,查询首页总贴数;否则拼入,查询用户帖子总数。
        // @Param():给参数取别名,
        // 如果方法只有一个参数,且对应 sql 是动态的,后续参数要在 <if> 内使用,就必须加别名;
        int selectDiscussPostRows(@Param("userId") int userId);
    }
    
  4. 建 Mapper 映射文件:discusspost-mapper.xml

    <!-- resultType 返回 List,声明元素类型即可 -->
    <select id="selectDiscussPosts" resultType="DiscussPost">
        # 不查询拉黑贴,userId 不为 0 拼入来查询“我的帖子”
        # 先按类型降序(1置顶、0普通),同类型再按创建时间降序(新到旧)
        # limit x,y:从 x+1 开始检索 y 行,x 可不写默认为 0
        select <include refid="selectFields"/>
        from discuss_post
        where status != 2
        <if test="userId != 0">
        and user_id = #{userId}
        </if>
        order by type desc, create_time desc
        limit #{offset}, #{limit}
    </select>
    <select id="selectDiscussPostRows" resultType="int">
        select count(id)
        from discuss_post
        where status != 2
        <if test="userId != 0">
            and user_id = #{userId}
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值