问题描述:有这样的一个表 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;
}
分享到:
相关推荐
7. **API集成**:在动态获取数据的情况下,需要通过后端API来获取或更新树状结构的数据。这涉及异步请求和错误处理。 综上所述,"树状结构下拉选"是Web开发中一个复杂而重要的组件,它涉及到前端UI设计、数据结构、...
标题“树状结构网络版”暗示我们关注的焦点是一种数据结构在网络环境中的应用,特别是树状结构在网络系统或软件中的实现。在这个上下文中,“树状结构”通常指的是数据组织的一种方式,它模仿自然界中的树,其中每个...
本项目"个人开发小工具--C#类似文件夹的树状结构的数据存放方式"聚焦于利用C#编程语言实现一种模仿真实世界文件系统中文件夹层次的树形数据结构。这种结构允许我们以递归的方式存储和操作数据,方便进行层级关系的...
而树状结构是一种常见的数据表示方式,常用于展示层次关系的数据,如文件系统、组织架构等。在本场景中,我们将在JSP页面中通过Ajax实现树状结构的动态加载,提高用户体验。 首先,我们需要理解Ajax(Asynchronous ...
在IT行业中,动态获取数据的树状菜单是一种常见的交互设计,尤其在网页应用中,能够有效地提高用户体验,减少网络带宽消耗。这个实现基于Ajax技术,利用异步通信的优势,实现了按需加载数据的机制。 Ajax...
在Android开发中,树状结构通常用于展示层次化数据,比如文件系统、组织架构或菜单。本实例聚焦于使用ExpandableListView实现一个仅支持三级深度的树状结构。ExpandableListView是Android SDK提供的一种可扩展的列表...
7. **JSON**:可能用于在客户端和服务器之间传输树状结构数据,因为JSON格式轻量且易于解析。 8. **Ajax**:异步JavaScript和XML,用于实现无刷新的数据更新,提高用户体验。在树状结构中,当用户展开一个节点时,...
### 分层数据管理和树状结构 #### 一、引言 在数据库管理中,分层数据的处理是一项常见但又充满挑战的任务。由于关系数据库的基本结构是平面化的表,因此如何有效地存储和查询分层数据成为了数据库设计者们关注的...
总的来说,这个项目展示了如何在Android平台上利用ListView和自定义Adapter来实现一个功能完善的树状结构,这对于学习Android UI设计和数据适配器模式是非常有价值的实践。通过分析源码,开发者可以深入理解Android...
本示例中,我们将探讨如何读取XML文件的树状结构数据,并使用TreeView控件在Windows Forms应用程序中呈现这些数据。以下是一些关键知识点: 1. **XML文件结构**: XML文件是一种用于存储数据的自描述格式,它具有...
在Swing中,我们可以利用JTree创建一个可拖放(Drag and Drop)的树状结构,使得用户能够通过简单的拖拽操作来移动或插入节点。这种功能在数据组织和展示时非常实用,例如在文件系统管理、项目管理或复杂数据结构的...
1. **XML文件结构**:XML(Extensible Markup Language)是一种用于标记数据的语言,具有自描述性,可以用来表示各种复杂的数据结构。示例中的XML文件包含一个根元素`<TestTreeView>`,下有多个`<TestNode>`子节点,...
树状结构是一种数据结构,其中的数据元素呈现层级关系,类似于自然界中的树,有根节点、分支节点和叶子节点。在组织机构管理中,根节点通常代表公司本身,分支节点为各个部门,而叶子节点则表示具体的岗位或员工。...
5. **数据库操作**:使用SQLite数据库存储数据,查询时根据父节点ID获取子节点,构建树状结构。 6. **性能优化**:为了避免一次性加载大量数据,可以使用懒加载策略,只在需要时加载子节点。此外,ListView的...
POI框架导出Tree结构数据(连接线) 一、问题描述及现象需求说明 在效果评估系统中,存在指标管理和模板管理两个模块。模板管理中有一个导出模板功能,可以将模板导出到Excel表格中。模板下可以嵌套的是指标或模板...
在Android开发中,有时我们需要展示的数据结构具有层级关系,例如部门结构、文件系统等,这时可以使用无限树状结构ListView来实现。这个标题所指的实现方式是利用ListView的复用机制,配合自定义适配器和布局管理,...
在本示例中,"Ajax技术实现动态获取数据的树状菜单"是一个具体的实践应用,主要目标是创建一个动态加载数据的树状菜单,用户可以在不刷新页面的情况下查看和操作数据。 首先,我们来了解树状菜单的基本概念。树状...
在Python中,可以使用`xml.etree.ElementTree`库解析XML文件,并创建一个树状结构。然后,利用这个树结构,我们可以开发一个用户界面,展示数据表的树形视图。用户可以通过点击节点来加载或隐藏子节点,从而实现交互...
在Java编程中,有时我们需要将数据结构以可视化的形式展示出来,例如树状结构。这个题目涉及到了如何在控制台以文本形式展示一个树状结构。在这个例子中,我们使用了一个名为`Folder`的类来表示树的节点,每个节点...
速、高效地获取所需信息,而树状结构是常见的网页组织方式之一。树状结构网页将网页按照层次关系进行组织,如同文件系统的目录结构,便于用户导航和搜索引擎爬取。然而,随着网站规模的扩大,树状结构的深度也会随之...