目录
- 涉及技术
- 数据库设计
-
- [用户表 t_user](#用户表 t_user)
- [版块表 t_board](#版块表 t_board)
- [帖子表 t_article](#帖子表 t_article)
- [帖子回复表 t_article_reply](#帖子回复表 t_article_reply)
- [站内信表 t_message](#站内信表 t_message)
- 项目配置和热部署
涉及技术
| 分类 | 技术 | 作用简述 |
|---|---|---|
| 服务器端技术 | Spring、Spring Boot、Spring MVC | 后端核心框架,Spring Boot 用于快速搭建项目,Spring MVC 处理请求分发 |
| 服务器端技术 | MyBatis | 数据库持久层框架,简化 SQL 操作 |
| 浏览器端技术 | HTML、CSS、JavaScript | 前端基础技术栈,实现页面结构、样式与交互逻辑 |
| 浏览器端技术 | jQuery、Bootstrap | 前端快速开发工具库,jQuery 简化 DOM 操作,Bootstrap 提供响应式布局组件 |
| 数据库 | MySQL | 主流关系型数据库,用于存储用户、帖子等业务数据 |
| 项目构建工具 | Maven | 项目依赖管理与构建工具,统一管理 Jar 包依赖、编译打包流程 |
| 版本控制工具 | Git + Gitee | 代码版本管理工具,Gitee 作为代码托管平台,方便团队协作与代码备份 |
数据库设计
数据库名字:forum_db
用户表 t_user
- 可以从我们的期望UI图里面提取出很多字段,值得注意的是creatTime和updateTime这两个字段是强制要求的每张表都要有


| 字段 | 类型 | 非空(Y/N) | 主键(Y/N) | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint | Y | Y | 编号,主键自增 | |
| username | varchar(20) | Y | N | 用户名,唯一 | |
| password | varchar(32) | Y | N | 加密后的密码 | |
| nickname | varchar(50) | Y | N | 昵称 | |
| phoneNum | varchar(20) | N | N | 手机号 | |
| varchar(50) | N | N | 电子邮箱 | ||
| gender | tinyint | Y | N | 2 | 性别0女,1男,2保密 |
| salt | varchar(32) | Y | N | 为密码加盐 | |
| avatarUrl | varchar(255) | N | N | 用户头像路径 | |
| articleCount | int | Y | N | 0 | 发帖数量 |
| isAdmin | tinyint | Y | N | 0 | 是否管理员0否,1是 |
| remark | varchar(1000) | N | N | 备注,自我介绍 | |
| state | tinyint | Y | N | 0 | 状态0正常,1禁言 |
| deleteState | tinyint | Y | N | 0 | 是否删除,0否,1是 |
| createTime | dateTime | Y | N | 创建时间,精确到秒 | |
| updateTime | dateTime | Y | N | 更新时间,精确到秒 |
版块表 t_board
期望UI图

| 字段 | 类型 | 非空(Y/N) | 主键(Y/N) | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint | Y | Y | 编号,主键自增 | |
| name | varchar(50) | Y | N | 版块名 | |
| articleCount | int | Y | N | 0 | 帖子数量 |
| sort | int | Y | N | 0 | 排序优先级,升序 |
| state | tinyint | Y | N | 0 | 状态0正常,1禁用 |
| deleteState | tinyint | Y | N | 0 | 是否删除,0否,1是 |
| createTime | dateTime | Y | N | 创建时间,精确到秒 | |
| updateTime | dateTime | Y | N | 更新时间,精确到秒 |
帖子表 t_article
期望UI图

| 字段 | 类型 | 非空(Y/N) | 主键(Y/N) | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint | Y | Y | 编号,主键自增 | |
| boardId | bigint | Y | N | 关联板块编号 | |
| userId | bigint | Y | N | 发帖人,关联用户编号 | |
| title | varchar(100) | Y | N | 帖子标题 | |
| content | text | Y | N | 帖子正文 | |
| visitCount | int | Y | N | 0 | 访问量 |
| replyCount | int | Y | N | 0 | 回复数 |
| likeCount | int | Y | N | 0 | 点赞数 |
| state | tinyint | Y | N | 0 | 状态,0正常,1禁用 |
| deleteState | tinyint | Y | N | 0 | 是否删除,0否,1是 |
| createTime | dateTime | Y | N | 创建时间,精确到秒 | |
| updateTime | dateTime | Y | N | 更新时间,精确到秒 |
帖子回复表 t_article_reply
期望UI图

| 字段 | 类型 | 非空(Y/N) | 主键(Y/N) | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint | Y | Y | 编号,主键自增 | |
| articleId | bigint | Y | N | 关联帖子编号 | |
| postUserId | bigint | Y | N | 楼主用户,关联用户编号 | |
| replyId | bigint | N | N | 关联回复编号,支持楼中楼 | |
| replyUserId | bigint | N | N | 楼主下的回复用户编号,支持楼中楼 | |
| content | varchar(500) | Y | N | 回贴内容 | |
| likeCount | int | Y | N | 0 | 点赞数 |
| state | tinyint | Y | N | 0 | 状态,0正常,1禁用 |
| deleteState | tinyint | Y | N | 0 | 是否删除,0否,1是 |
| createTime | dateTime | Y | N | 创建时间,精确到秒 | |
| updateTime | dateTime | Y | N | 更新时间,精确到秒 |
站内信表 t_message
期望UI图

| 字段 | 类型 | 非空(Y/N) | 主键(Y/N) | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint | Y | Y | 编号,主键自增 | |
| postUserId | bigint | Y | N | 发送者,关联用户编号 | |
| receiveUserId | bigint | Y | N | 接收者,关联用户编号 | |
| content | varchar(255) | Y | N | 内容 | |
| state | tinyint | Y | N | 0 | 状态,0未读,1已读,2已回复,默认0 |
| deleteState | tinyint | Y | N | 0 | 是否删除,0否,1是 |
| createTime | dateTime | Y | N | 创建时间,精确到秒 | |
| updateTime | dateTime | Y | N | 更新时间,精确到秒 |
项目配置和热部署
SpringBoot热部署
- 引入这个依赖,修改项目代码的时候就不用再重新启动项目,导致如果是很大的项目重启浪费时间了

- 记得还要在idea中设置这个


测试环境是否正常

- 手动关闭打包的时候执行测试代码,如果不关闭则会导致打包的时候会把测试代码也一起打包,有可能会在生产环境是导致效率降低。

GIT远程仓库克隆到项目本地仓库

- 把远程仓库克隆到项目本地方便项目修改的时候保存不同的版本,如果克隆成功就会有gitee

- 可以使用命令来操作,在idea的终端


测试数据库连接
- 配置完数据库后,可以在测试类运行这个代码来测试数据库是否连接成功

配置mybatis扫描路径
Mybatis扫描路径的作用是什么? 这里用MapperScan注解来指明路径是dao层中的类

-
自动扫描指定文件路径(通常是Mapper)里面的接口,让Spring启动时就统一管理,那么使用这些接口对象的时候就不需要创建可以直接用Autowired注入
-
还有一个重要的原因就是因为他让Spring统一管理了就替代了对每个接口文件都加上Mapper注解
-
这是dao层中的一个类,有这个就不用加上Mapper注解让Spring来管理了。mybatis会自动扫描让Spring管理
