本部分主要涉及两个内容:置顶和列表分类。
1. 置顶
一般的论坛都会有帖子置顶功能。现在我们在通知类列表中增加置顶功能。
要求置顶在最上,其他按照发布时间降序排列。因此修改表,增加一个sort字段,表示排序,0表示置顶
2. 排序
修改controller类中的getNotices方法。
- 第一按照sort排序,置顶记录sort=0,其他记录sort>0。
- 第二新发表的通知在前,即按照发表时间降序排列。
- 第三按分页获取数据,每页10条记录,取第1页。
3. 前端展示
修改NoticeList.vue
4. 字典
上面的例子中,首页显示了10条最新通知。这个10是写在代码中的,显然这是不合适的,无法动态修改。解决这个问题的方法是,将这个数据记录在数据库中,并可以在程序的后台管理中(后续开发)动态设置。为此建立一个字典表,记录这个值。
哪些内容可以放到字典中:
性别。因为性别不会变动,但是用户信息会用到。
首页通知条数。每次打开首页都会用到。允许变动,但很少会变动。
新建dict实体类和jpa接口
新建Constant类,用于记录数据字典数据的标记,以便在程序各个模块中保持调用一致。
修改Controller类中的getNotices()方法
修改数据字典中相应值为5,同时前端界面做了调整
5. 问题列表
展示同学们针对课程的问题和回复。因为课程涉及很多内容,比如Java、Mysql、Tomcat、HTML、JavaScript,还有Spring Boot、VUE、Element UI等,所以对问题,需要进行分类,以便后续的查询和统计。
- 分类如果需要灵活配置,不限定层次,则需要采用树形结构,同时可以在后台设置。
- 首页列表只显示一个分类,因此在问题表中设计一个主分类字段。
- 排序按照置顶、回复时间倒序排列
Question表
分类表
分类树
对照表,首页用不到
回复表
6. Sql语句
- 显示4个内容:主分类、题目、发布人全名、发布/回复时间
- 排序按照置顶、回复/发布时间倒序排列
- 因为显示内容涉及多个表,为提高效率,将所需要的内容用一条sql语句取出。
这里涉及到了两个技术问题
Jpa中如何使用原生sql
为返回字段单独建立一个返回值接口 QuestionIndex。
7. 返回的json数据
8. 前端显示