原生sql 查询返回一个实体_从零开发一个WEB应用(五)置顶

该博客讨论了在通知列表中增加置顶功能,按照sort字段和发布时间对记录进行排序,以及如何分页获取数据。此外,还介绍了如何通过数据库字典表动态设置首页通知条数,并展示了在问题列表中进行分类和排序的方法。涉及到的技术包括SQL查询、数据字典管理和前端展示优化。
摘要由CSDN通过智能技术生成
74cdd812b0a6d52eefb7b2d9c063b026.png

本部分主要涉及两个内容:置顶和列表分类。

1. 置顶

一般的论坛都会有帖子置顶功能。现在我们在通知类列表中增加置顶功能。

要求置顶在最上,其他按照发布时间降序排列。因此修改表,增加一个sort字段,表示排序,0表示置顶

ec8dc13665b0b1a2a659258494d2d507.png

2. 排序

修改controller类中的getNotices方法。

  • 第一按照sort排序,置顶记录sort=0,其他记录sort>0。
  • 第二新发表的通知在前,即按照发表时间降序排列。
  • 第三按分页获取数据,每页10条记录,取第1页。
dac61ab31547001d0f1bce6344edaf5c.png

3. 前端展示

修改NoticeList.vue

dc568e3d2b69645e85a298d3f72a694f.png

4. 字典

上面的例子中,首页显示了10条最新通知。这个10是写在代码中的,显然这是不合适的,无法动态修改。解决这个问题的方法是,将这个数据记录在数据库中,并可以在程序的后台管理中(后续开发)动态设置。为此建立一个字典表,记录这个值。

哪些内容可以放到字典中:

性别。因为性别不会变动,但是用户信息会用到。

首页通知条数。每次打开首页都会用到。允许变动,但很少会变动。

257f1756d95a4ba9e51686a728e82445.png
dfcd17e74a1d6def44e8e6343916d46e.png

新建dict实体类和jpa接口

新建Constant类,用于记录数据字典数据的标记,以便在程序各个模块中保持调用一致。

18d37238ff264a6194b7946c86e6927f.png

修改Controller类中的getNotices()方法

014e711b063952efbb050f4729549278.png

修改数据字典中相应值为5,同时前端界面做了调整

3929e3f9fe2aacf632749effdfaff45d.png

5. 问题列表

展示同学们针对课程的问题和回复。因为课程涉及很多内容,比如Java、Mysql、Tomcat、HTML、JavaScript,还有Spring Boot、VUE、Element UI等,所以对问题,需要进行分类,以便后续的查询和统计。

  • 分类如果需要灵活配置,不限定层次,则需要采用树形结构,同时可以在后台设置。
  • 首页列表只显示一个分类,因此在问题表中设计一个主分类字段。
  • 排序按照置顶、回复时间倒序排列

Question表

ec3a238969aca6afe78e4d249a2aba11.png

分类表

55828e93b4592b8fb1ae2e92a4940ce6.png

分类树

f0f4be3a1ddb16abb4fc0f8495bd295b.png

对照表,首页用不到

edb156f48013e94d821876726469edec.png

回复表

bd08a492247c6c3d28057ee560dc4ebd.png

6. Sql语句

  • 显示4个内容:主分类、题目、发布人全名、发布/回复时间
  • 排序按照置顶、回复/发布时间倒序排列
  • 因为显示内容涉及多个表,为提高效率,将所需要的内容用一条sql语句取出。

这里涉及到了两个技术问题

Jpa中如何使用原生sql

为返回字段单独建立一个返回值接口 QuestionIndex。

5993965b16c4415dcfa4805c24aa6bee.png
82e771ffdb2660cc608423aad38a0343.png

7. 返回的json数据

93358dc2aac06b6f76e48051ab8b2702.png

8. 前端显示

54b4aaddd0a79edb4ee263bd88dd1663.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值