java从数据库中查询数据,存储为树形结构,怎么做

java从数据库中查询数据,存储为树形结构,怎么做,第1张

以前用dtree写过一个,先把你数据库数据查出来,重点是确定父id跟子id都已经分好了,然后剩下的主要是在jsp里写树菜单就好了:给你参考下,下面那两个文件你可能没有,不过应该可以在网上下载的

<div class="dtree">

<p><a href="javascript: dopenAll();">展开</a> | <a href="javascript: dcloseAll();">关闭</a></p>

<script type="text/javascript">

d = new dTree('d',"${contextPath}/js/dtree/");

dadd(0,-1,'涉及问题选择');

<c:forEach items="${problemList}" var="pro">

var fid;

var config="${procontent}";

fid = '${profid}';

var id = '${proid}';

if(${proson}==0){

ss='+config,'${procontent}','frame_right');

dadd('${proid}',fid,config,'${contextPath}/ajdj/ajdj_sjwtLjdoconfigid='+id,'${procontent}','frame_right');

}else{

dadd('${proid}',fid,config,'','${procontent}','frame_right');

}

</c:forEach>

documentwrite(d);

</script>

</div>

定义一个TreeNode类里面有

id 自身id

parentId 父节点id

name 树显示文本

url 链接地址

open 是否展开树

等属性

将从数据库查出来的数据一个个set到TreeNode里面封装成一个List<TreeNode>

再将这个List转换成你的树所需要的格式内容比如json格式

第一种:单表。

列分别为 id、菜单名称、子菜单id列表;

id:菜单的唯一编号

子菜单id列表:用逗号(或其他分隔符)分割的多个id的字符串,再由程序中进行处理,分割出多个id;

优点:查询速度非常快。

缺点:不利于维护和拓展,在进行菜单项排序时需要再多写代码进行处理。

第二种:单表内连接。

列分别为 id、菜单名称、父菜单id;

根节点的父菜单id为null或者0等一个可以唯一标志的。在查询时进行表内连接查询;

优点:利于表结构的维护和拓展,并且符合设计范式;

缺点:在查询时会造成一些麻烦,并且性能上会受到影响。

当然还有很多其他的方法,这里只例举2个比较常用的方法。

数据库设计的时候,通常的做法是用父ID来解决树状结构,也有二叉树等等

id  pid category_name

然后,用递归就能实现,也有引用数组的方式

<php

/

  此方法由@Tonton 提供

  >

以上就是关于java从数据库中查询数据,存储为树形结构,怎么做全部的内容,包括:java从数据库中查询数据,存储为树形结构,怎么做、java树形结构如何从数据库读取数据、sql server 2005实现树形菜单显示的数据库表怎么设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9325358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存