商务服务
多级留言/评论的功能实现——SpringBoot3后端篇
2024-11-20 17:27

多级留言/评论的功能实现——SpringBoot3后端篇

最近毕设做完了,开始来梳理一下功能点,毕竟温故知新嘛

今天先写一下我的多级留言/评论功能数据库和后端是怎么设计的(前端的设计会再写一篇单独的文章删除评论还没做,这个功能还没有思路,目前也没有太多时间来设计了,搜了一下感觉挺复杂的,后面有时间了会补上

接下来文章里说的留言和评论指的都是同一个东西!因为我需求一开始就是叫留言功能,但是评论这俩字儿可能比较顺口🤣

如果你能耐心看完这篇文章,应该会有自己的整体思路和大概方向了,接下来就是根据思路去完善你的需求,用代码实现即可

若有错漏,欢迎指出

想要实现类似bilibili的评论区那样,在我的药材、方剂、文章详情页下都实现多级留言功能,但是不以递进的方式来展现层级关系

解释 顶级留言 = 一级留言 = 根留言,子留言从二级留言开始,三级,四级… 二级留言直接挂在一级留言的下面三级及以上留言显示的位置与二级留言是保持 ,用 来区分。我的实现图如下多级留言/评论的功能实现——SpringBoot3后端篇

多级留言/评论的功能实现——SpringBoot3后端篇 补充 我这里的 字段是参考了博主 黄金贼贼 的这篇文章,觉得后面会用上,就也加上了; 、 字段我目前没用到,设计的时候想到啥就写上了,可以先不用关注这两个字段; 字段我用上了,但是感觉其实可以不设置,有点冗余,可以看你自己的具体实现决定是否需要该字段; 还有就是,我整个系统除了收藏、认证方剂功能外,用的都是逻辑删除,所以会设置一个字段。

附上sql建表语句,根据自己的需求更改

 

前提 用户表:需要有用户ID(必须,用户名/昵称/角色身份等字段(根据你需要显示的需求来定被关联的主体的表:关联主体ID(我这里的存放的是三张被关联主体表的ID,可以存药材ID方剂ID文章ID,因为我这三个主体都需要有留言功能)简单点说就是,你要在哪个内容下面用这个留言功能,这个关联的主体就是它

解释 简单讲一下几个字段 字段:因为我要将药材、方剂、文章的留言都存在同一张表,需要这个字段进行区分(但是不推荐这么做,因为我数据量小,这样能快速实现功能且省事) 字段:每一条评论的直接父留言ID,存放的可能为顶级留言ID,也可能是子留言ID(如,子留言也会有子留言[或者说成回复],那它本身就是自己子留言的直接父亲;这个字段主要用于实现那个 功能点,被艾特的nickname是被留言[或回复]的二级、三级、四级…等留言的发表人昵称) 字段:用于区别顶级留言与子留言。这个字段会用于查出全部顶级留言返回一个列表,根据结果列表可以进一步进行子留言查询(这里我还利用 PageHelper 做了分页

entity 完整实体类

项目使用了工具

 

dto 封装请求数据

在接口开发时,一般不直接使用完整实体类,而是使用 dto 类进行开发进行; 项目中使用了进行参数校验

为什么刚刚我的数据库表里定义为类型的字段,这里都改用了类型呢 这里解释一下 在数据库中,类型用于存储较大的整数值,而在某些编程环境中,如Java的IDE(例如IntelliJ IDEA,这个类型通常会被映射为类型。这是因为类型在Java中用于表示64位的整数,与数据库中的类型相对应; 类型在Java中是标准的整数类型之一,用于表示较大的整数值,与数据库中的类型兼容; IDE为了简化开发过程,会自动(为啥说自动呢,因为我的实体类是在idea中连接了mysql后,直接使用"脚本扩展 groovy"进行创建的,并非我手动创建) 将数据库中的类型映射为Java中最常用的对应类型,以便开发者可以直接使用而不需要额外的类型转换; 另外,Java提供了类,但这通常会增加代码的复杂性。在对性能不是特别敏感的场景下,可以使用来处理更大的数值。

 

dto 封装分页请求数据

如果你没有分页需求,可以不用管这个

 

vo 请求返回数据

封装响应给客户端的数据

 

重点提一下最后的三个字段,数据库表中是没有这三个字段的,这是在做sql多表查询时额外返回的字段,前端需要这些数据;若你没有显示用户身份需求的话,可以省略字段。 子评论列表很重要,这里存放了顶级评论下所有的子评论,一层层嵌套的,后面会说怎么用

 

解释一哈

添加评论

  • 需要提交的数据封装在中传给后端,后端使用接收数据
  • 其中,评论内容、关联主体ID、评论类型均不能为空

获取评论列表

  • 请求数据时需要提交 中的数据,并使用 进行参数的校验
  • 这里使用了 进行分页处理(不做展示,网上教程也很多其实,或者私聊我获取这部分代码,所以返回的 数据需要用 包裹返回
  • 是我自己封装的通用的结果返回类,你也可以直接写成 但是在你的接口实现类(Impl) 处需要返回对应的列表数据给前端

接口

 

实现类

 

若这部分有疑问可以移步文章末尾看看返回的数据结构,结合起来再看看这段代码,可能会更清楚,若还有疑问,可以在评论区留言😁

 
 
 

这里使用到了左连接进行多表查询,只是看起来复杂,仔细看看语句应该都能看懂。 主要提一下,这里将查到的昵称、头像、角色名使用别名对应了前面 vo 那几个字段,返回给前端使用

后端的设计到这里就结束了,删除评论的接口还没有设计,后面有时间补上😁

展示一下返回的评论列表是怎么样的,便于理解递归和 字段。 示例中总共有7条顶级留言,但我是分页查询,本页我只查了3条

  • 第一条id为 20240437 的顶级留言,没有子留言,故字段为空。
  • 第二条id为 20240418 的顶级留言,只有1条二级子留言。
  • 第三条id为 20240402 的顶级留言,有3条二级留言。其中第一条二级留言下有一条三级留言(也可以有多条,我这里只是示例数据的结构,该三级留言下有一条四级留言,该四级留言下没有子留言了(后面还有五级、六级也是这个结构,字段为空

若看着不方便,你可以cv到一些可以展示 格式数据的平台或编辑器上(如浏览器插件FeHelper,折叠着看,会更清楚,记得把我的注释去掉

 

FeHelper插件里,整体展示多级留言/评论的功能实现——SpringBoot3后端篇

    以上就是本篇文章【多级留言/评论的功能实现——SpringBoot3后端篇】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/852.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
白杨SEO怎么样?看看认识或者参加过白杨SEO训练营或付费群的朋友们怎么说?
谢谢有你,今天来跟白杨SEO做个互动可以吗?1、如何参与互动呢?如果你有白杨SEO个人微信(我有多个,你已加了任何一个均可),
小红书运营必看:避免踩入五大常见坑
哈喽,大家下午好~在数字化时代,越来越多人意识到小红书的潜在价值,纷纷开始入局。但很多在经历了一段时间的运营后,常常面临
8000亿市场规模 腾讯广告加盟2025年政策 全媒体信息流广告代理
如今是互联网大数据时代,流量为王,广告的效果越来越明显,跟着商家产品更新换代速度的提高,商家对于广告的依赖性不断增强。近
湖北什么是seo关键词优化排名|武汉关键词优化
本文目录导读:了解SEO关键词优化排名湖北地区SEO关键词优化排名的关键因素湖北地区SEO关键词优化排名的注意事项随着互联网的快
抖音推广跟百度推广有什么区别
本文大纲:1、背景及标题这个问题来源2、一般SEO从业者怎么看?3、百度自己产品文心一言怎么看?4、白杨SEO的看法以及建议背景及
小红书聚光广告 | 在小红书上怎么做旅游广告推广投放?
在小红书上进行旅游广告推广投放,可以遵循以下详细步骤和策略来确保推广效果的Zui大化:一、明确广告目标首先,需要明确广告的
种草新灵感-开辟新大陆-小红书引领游戏新趋势阵地
【小红书游戏月刊】带你探索小红书游戏新大陆,以全景观察、趋势灵感、种草攻略三大板块,带来小红书游戏品类解析,玩家趋势洞察
python爬虫保存html
在当今数据驱动的时代,网络爬虫正成为数据收集和分析的重要工具。对于刚入行的小白来说,学习如何使用 Python 爬虫来保存 HTML
2024年搜索引擎优化趋势是什么?未来SEO的发展方向如何?
在2024年,搜索引擎优化(SEO)领域必将迎来新的变革与发展趋势。随着技术进步和用户行为的不断演变,SEO从业者需要紧跟最新趋势
华尔街见闻早餐FM-Radio | 2025年1月21日
华见早安之声市场概述美股周一休市,特朗普宣誓就职后,美股期货保持涨势。泛欧股指勉强四连涨,再创三个月新高,德股四日连创历