牛客网项目开发记录

数据库表

用户表 user
字段 类型 备注
id int 主键、自增
username varchar 用户名,创建索引
password varchar 用户密码
salt varchar 加密盐值
email varchar 用户邮箱,创建索引
type int 用户类型:0 普通、1 管理员、2 版主
status int 用户状态:0 未激活、1 已激活
activation_code varchar 激活码
header_url varchar 用户头像地址
create_time timestamp 注册时间
评论表 comment
字段 类型 备注
id int 主键、自增
user_id int 评论的用户 id,创建索引
entity_id int 评论实体 id,创建索引
entity_type int 评论实体类型:1 帖子评论、2 评论回复
target_id int 评论目标 id
content text 评论内容
status int 评论状态:0 有效、1 无效
create_time timestamp 评论发表时间
帖子表 discuss_post
字段 类型 备注
id int 主键、自增
user_id int 发帖的用户 id,创建索引
title varchar 帖子表标题
content text 帖子内容
type int 帖子类型:0 普通、1 置顶
comment_count int 评论数量
status int 帖子状态:0 普通、1 精华、2 拉黑
create_time timestamp 评论发表时间
用户登录凭证表 login_ticket
字段 类型 备注
id int 主键、自增
user_id int 登录用户 id
ticket varchar 登录凭证,随机字符串
status int 登录状态:0 有效、1 无效
expired timestamp 过期时间
消息表 message
字段 类型 备注
id int 主键、自增
from_id int 发消息的 id,创建索引
to_id int 收消息的 id,创建索引
conversation_id varchar 会话 id,由通信双方 id 拼接,创建索引
content text 消息内容
status int 消息状态:0 未读、1 已读、2 删除
create_time timestamp 消息发送时间

开发社区首页

搭建基本环境

构建 SpringBoot 的 maven 项目,引入 mysql 和 mybatis 依赖。


application.properties 配置文件中:

  • 关闭 thymeleaf 缓存
  • 配置数据库,设置基本连接信息、最大线程数,最小空闲线程数,最大空闲时间等
  • mybatis,设置 mapper 文件的位置、实体类包名、使用主键等

创建 community 数据库和数据库表。


用户相关操作:

  • 创建对应 user 表的 User 实体类
  • 创建 UserMapper 接口,使用 @Mapper 注解
  • 创建 user-mapper.xml,重复 sql 语句可以写在 <sql id = "xxx"> 标签,通过 <include refid="xxx"/> 引用。

开发社区首页(discuss_post 表)

功能拆分:开发社区首页,显示前 10 个帖子。开发分页组件,分页显示所有帖子。

用到的表是 discuss_post 数据库表,包括帖子 id、发帖人 id、标题、内容、类型、状态、发帖时间、评论数量(为了提高效率,避免关联查询,因此冗余存储)、分数(用于进行热度排名)。

开发数据层

帖子相关操作:

  • 创建对应 discuss_post 表的 DisscussPost 实体类。

  • 创建 DisscussPostMapper 接口,使用 @Mapper 注解。

    • 分页查询中用户 id 是可选参数,通过动态 SQL 选择,如果为 0 就不使用,在开发用户个人主页查询用户发帖记录时需要使用。
    • 如果只有一个参数,并且在动态 SQL 的 <if> 里使用,必须使用 @Param 加别名。
  • 创建 disscusspost-mapper.xml

    • where status != 2 拉黑的帖子不展现。

    • <if test="userId!=0"> userID 为 0 时不使用,按照类型,发帖时间排序。


开发业务层

创建 DiscussPostService 类,可以分页查询帖子和帖子数量。

创建 UserService 类,实现根据 id 查询用户功能,因为显示帖子时不显示用户 id,而是显示用户名。


开发视图层

把静态资源 css、html、img、js 放到 static 目录下。

把模板 mail、site、index.html 放到 template 目录下。

创建 HomeController,getIndexPage 方法,用 map 集合把帖子和用户封装到一起。

修改 index.html,使用 <th:text="${map.xxx.xxx}" 动态替换。

【问题】使用帖子关联查询用户时,给查询用户的 findUserById

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值