`
zhou568xiao
  • 浏览: 96205 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

如何获取树状结构数据

阅读更多
问题描述:有这样的一个表 ProductCatalog
id   name        parent   
1    aaa        
2    bbb     
3    ccc         1
4    ddd         2
5    eee         3
6    fff         3
7    ggg         2
要根据id获取这个父节点下的所有子结点,数据量不是很大,不考虑用复杂的mysql语句(不知道那位大侠能用mysql语句实现,如果实现了告诉我一声哦)和存储过程(mysql也不支持存储过程),那就只好多写两个java方法了。复杂冗余的东西我就不多写了,主要就写获取树状结构数据的两个方法。

/**
* 根据parentid得到这个父节点下的一级子结点。
*/
@SuppressWarnings("unchecked")
public List getChildrenProductCatalogById(Long parentid) {
if(parentid!=null && !parentid.equals(""))
{
String jpql="select p from ProductCatalog p where p.parent=?";
Query q = this.entityManager.createQuery(jpql);
q.setParameter(1, parentid);
return q.getResultList();
}
else
{
String jpql = "select p from ProductCatalog p where p.parent=null or p.parent=''";
Query q = this.entityManager.createQuery(jpql);
return q.getResultList();
}
}


/**根据id得到这个父节点下的所有子结点
* @param id
* @return
*/
//先申明一个List类型的变量productCatalogs
public List<ProductCatalog> getAllChildrenProductCatalogById(long id) {
List<ProductCatalog> childrenProductCatalog = getChildrenProductCatalogById(id);
for (int i = 0; i < childrenProductCatalog.size(); i++) {
productCatalogs.add(childrenProductCatalog.get(i));
List<ProductCatalog> childrenProductCatalog1 = getChildrenProductCatalogById(childrenProductCatalog.get(i).getId());
//如果子结点下还有子结点的话就自己调用自己
if (childrenProductCatalog1.size() > 0) {
getAllChildrenProductCatalogById(childrenProductCatalog.get(i).getId());
}
}
return productCatalogs;
}
分享到:
评论
1 楼 liukai 2010-06-30  
请问为什么我根据你的方法
在控制器里调用方法得到的的只有下级节点
下下节点却没
但是在DAO层里
返回结果却是正确的 不知道如何解决

相关推荐

    java读取json格式3层树结构数据.zip

    java读取json格式3层树结构数据,目前代码是能读到树的3层,可以继续在代码里面添加读取层数。

    Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)

    数据结构为数组中包含对象–树形结构,用Vue组件的写法实现以下的效果: 树形列表,缩进显示层级,第5级数据加底色,数据样式显色,点击展开折叠数据。本文为用Vue实现方式,另有一篇为用knockout.js的实现方法。 ...

    Java实现树形层级结构的表格

    Java实现的,将树形层级结构的数据转换成表格,通过打点的方式向表格中插入数据,支持行头表格、列头表格、交叉表格三种形式

    Ajax实现动态获取数据的树状菜单(代码)

    程序将使用Ajax技术实现动态获取数据的树状菜单。当展开菜单时,自动向服务器发送请求,查询该菜单下的子菜单,并在客户端显示子菜单,而无需刷新整个页面。 源码结构说明 1.TreeWiewDemo文件夹下为源文件 2....

    js+asp实现树形结构,选取文本框可以获取树形节点的值

    js+asp实现的树形无限递归结构,点击文本框,弹出层调用树形结构页面,点击节点的值后文本框可以获取到值, 在ie6.0下可以运行 但是在ie8.0下无法获取值

    遍历多级树状json获得父子节点值

    此方法可快速循环遍历多级嵌套或树状json结构,根据传入的参数获得对应的父子节点的属性值。

    js 递归json树实现根据子id查父id的方法分析

    最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要...

    树形结构数据库设计和显示

    树形结构数据库设计,和java获取json到前台显示。

    OracleSQL疑难解析

    提供大量现成的解决方法,包括汇总和聚合数据、多表数据查询、生成和获取数据、通用查询模式、日期和时间值的处理、字符串、处理数字、事务处理、数据字典、清理数据、常见报表问题、树状结构数据、处理XML数据、...

    HDF(分层数据格式)中文使用简介

    目录 第一章 HDF介绍 1.1. 本章概况 1.2. 什么是HDF 1.3. 为什么创建HDF 1.4. HDF的6个基本数据结构 ...9.4 显示HDF对象的树状结构 9.5 显示文件和数据对象的注解 9.6 显示Vdatas 9.7 显示光栅图像 9.8 显示科学数据集

    XML - 报表数据的新大陆.rar

    在.NET中使用XmlDocument加载一个XML文档后,会形成一个以XmlDocument为根节点的XML对象树状结构,面对这个XML树结构,获取其中的数据方法很自然的就是使用XPath技术了。XPath技术就是在XML树状结构中,以某个节点...

    json-viewer:Web组件以树状视图可视化JSON数据

    一个Web组件,以树状视图可视化JSON数据 安装 npm i @alenaksu/json-viewer 然后将包导入到您的项目中。 import '@alenaksu/json-viewer' ; 用法 &lt; json&gt; 属性 data - JSON对象的字符串表示来负载 特性 data -...

    SQL 查询树形子节点.

    sql 查询 所有子节点 方法已经调试通过(sql-server 2005)

    基于echarts3.84,获取tree图中每个节点的位置,21579行,getMyPosition方法

    如何在tree图中获取每个节点相对于canvas的位置,文件里面可以直接参考21579行,getMyPosition方法,里面的返回值中有你需要的,直接调用echart实例的getMyPosition方法即可。如myChart.getMyPosition({finder:{...

    cacti-win.zip_SNMP_ldap_snmp获取数据_wmic update_网络监测

    它通过snmpget来获取数据,...它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好。

    java版list-map实现 树结构 父子结构 通俗易懂

    此java类实现了对数据表的分类递归树的实现,为本人倾力之作,后期,会发布js版,敬请期待!

    C# 系统应用之TreeView控件显示树状磁盘路径并在ListView显示文件

    资源主要是结合博客文章:http://blog.csdn.net/eastmount/article/details/21241313主要讲述使用C# winForm实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录,并点击结点文件夹能在...

    递归拿到所有子类的id

    List list2 = new ArrayList(); public List getAll(String i,List&lt;Student&gt; list){ Iterator iter = list.iterator(); while(iter.hasNext()){ Student student = (Student)iter.next();...

    微信小程序学习笔记(二):目录结构,数据展示

    作者:Mr_OOO,来自原文地址 目录结构 小程序的基本目录结构如图(1)所示:  (此图片来源于网络,如有侵权,请联系...//获取应用实例 var app = getApp() Page({ data: { motto: 'Hello World wechat', userInfo: {}

    rejson:Redis的JSON数据类型

    文档以二进制数据的形式存储在树形结构中,从而可以快速访问子元素 所有JSON值类型的类型化原子操作 快速开始 ,例如: 文献资料 阅读的文档 当前的局限性和已知问题 搜索对象键为O(N) 删除项目后不会按比例缩小...

Global site tag (gtag.js) - Google Analytics