MyBatis Collection集合嵌套查询树形节点
今天遇到一个需求,需要做一个文章评论的功能,大概就像下图这样
用户可以给某篇文章评论,然后其他用户可对该条评论进行评论,最终形成一个树形的结构,下面记录一下大致的实现过程,主要介绍如何从数据库中以树形结构查出所有评论信息。
我在设计库表的时候,将评论拆分为评论表和回复表,评论挂在文章下面,回复挂在评论下面。
使用的数据库为oracle数据库:
实体类:
(暂时不考虑与用户表连接的问题,所以实体类的属性暂时使用用户的id)
下面写一个方法从数据库中查出某一条评论下的所有回复
ReplyDao
ReplyMapper.xml
主要就是这个Mapper文件,在 dao 层,我们只调用 getReplyTree方法, reply_id=0代表顶级节点。然后通过 collection 节点继续调用 getNextNodeTree方法进行循环调用。
column 代表会拿父节点 id ,作为参数获取 next 对象
javaType 代表 next 对象是个列表,其实可以省略不写
ofType 用来区分 JavaBean 属性类型和集合包含的类型
select 是用来执行循环哪个 SQL
结果返回的JSON串,形成一个树形结构,回复对象的replys集合中又包含着回复信息,将这个JSON串交给前端页面遍历即可。怎么在前端展示就不是本文的重点了,不再赘述。
领取专属 10元无门槛券
私享最新 技术干货