也是关于树型结构的内容 ,就是数据库递归查询,我在项目中用的是oralce数据库 ,它提供了递归查询的功能,
像普通的查询一样,在网上了解了一下,发现很多数据库都提供了递归查询的实现,如mysql,db2,oralce等。
下面贴出来一个角色信息的hibernate配置文件来,里面用到了这种查询。
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.ylsoft.power.domain.entity.Catalog"
table="PLATFORM_POWER_CATALOG">
<cache usage="read-write" region="power_catalog"/>
<id name="catalogId" type="java.lang.Integer">
<column name="catalogId" not-null="true" length="20" />
<generator class="sequence">
<param name="sequence">PLATFORM_CATALOG_SEQ</param>
</generator>
</id>
<property name="label" type="java.lang.String" column="label"
length="20" />
<property name="url" type="java.lang.String" column="url"
length="500" />
<property name="enable" type="java.lang.Boolean" update="true"
insert="true" column="enable" />
<property name="corder" type="java.lang.Integer" update="true"
insert="true" column="corder" />
<many-to-one name="parent" column="parentId"
class="com.ylsoft.power.domain.entity.Catalog">
</many-to-one>
<!-- roles -->
<set name="actions" cascade="all">
<key column="catalogId" />
<one-to-many entity-name="com.ylsoft.power.domain.entity.Action" />
</set>
<!-- departs -->
<set name="fields" cascade="all" >
<key column="catalogId" />
<one-to-many entity-name="com.ylsoft.power.domain.entity.Field" />
</set>
</class>
<sql-query name="com.ylsoft.power.domain.entity.Catalog.Descendants">
<return alias="catalog"
class="com.ylsoft.power.domain.entity.Catalog">
<return-property name="parent">
<return-column name="parentCatalogId"/>
</return-property>
</return>
select
c.catalogId as {catalog.catalogId},
c.label as {catalog.label},
c.enable as {catalog.enable},
c.url as {catalog.url},
c.parentId as parentCatalogId,
c.corder as {catalog.corder}
from platform_power_catalog c
start with catalogId=:catalogId
connect by prior catalogId=parentId
order by c.catalogid
</sql-query>
<!-- 得到指定部门的所有上级部门 -->
<sql-query name="com.ylsoft.power.domain.entity.Catalog.Ancestors">
<return alias="catalog"
class="com.ylsoft.power.domain.entity.Catalog">
<return-property name="parent">
<return-column name="parentCatalogId"/>
</return-property>
</return>
select
c.catalogId as {catalog.catalogId},
c.label as {catalog.label},
c.enable as {catalog.enable},
c.url as {catalog.url},
c.parentId as parentCatalogId,
c.corder as {catalog.corder}
from platform_power_catalog c
start with catalogId=:catalogId
connect by prior parentId=catalogId
order by c.catalogid
</sql-query>
</hibernate-mapping>
这里用了hibernate,其实就是一个普通的查询语句。
分享到:
相关推荐
- 递归查询主要用于处理层级数据,例如组织结构、树形菜单等。在Oracle数据库中,我们可以使用`CONNECT BY`子句实现递归查询。 - 1.2.1 递归查询:通过`CONNECT BY`和`PRIOR`关键字,从指定的根节点(`t.orgid = ...
Hive是一款基于Hadoop的数据仓库工具,能够对存储在Hadoop文件系统中的数据集进行数据提取、转换、加载(ETL),这是一种可以简化MapReduce编程的工具。由于Hive的设计初衷是让用户能够使用类SQL的查询语言“HiveQL...
树形结构是一种非线性的数据结构,通常用来表示层次化的数据。在实际应用中,树形结构被广泛应用于数据库中的多级分类等场景。树图递归涉及到的是如何通过递归算法遍历树形结构的数据,并对其进行处理。 **实现细节...
在介绍thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法时,需要掌握的核心知识点主要集中在以下几个方面: 首先,理解thinkPHP框架中递归的概念。递归是一种常见的编程技术,是指函数直接或间接调用自身的...
在这个场景中,我们需要将一个用if、else语句实现的树形结构转换为递归函数,以便更高效地在文本文件(如TXT)中查找和提取值。 首先,理解树的基本概念是至关重要的。树由节点(Node)组成,每个节点可能有零个、...
然后,我们可以遍历`doc`对象,提取菜单项,构建树形结构。每层菜单可以表示为一个`Node`对象,通过递归方法构建树。对于无限层的菜单,我们需要一个自定义的数据结构(如`TreeNode`类),并且在遍历过程中不断添加...
在iOS开发中,树形结构是一种常见的数据组织方式,它以节点的形式呈现,每个节点可以有零个或多个子节点,这些子节点又可以有自己的子节点,形成一个层级关系。这种结构广泛应用于文件系统、数据解析(如XML、JSON)...
使用递归算法结合数据库解析成Java树形结构的代码解析是指通过...使用递归算法结合数据库解析成Java树形结构的代码解析可以将树形结构数据从数据库中提取出来,并将其转换为Java树形结构,方便地在Java应用程序中使用。
- 堆:特殊的树形数据结构,常用于实现优先队列。 - 图:用于表示实体间的复杂关系。 #### 三、教学方法与实践 - **理论讲解**:详细介绍每种算法和数据结构的定义、特性、适用场景及其优缺点。 - **编程实践**...
1. **遍历算法**:对于树形结构,如二叉树,提取器可能使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历节点,获取所需数据。 2. **哈希函数**:在哈希表中,提取器利用哈希函数将数据映射到特定位置,快速查找和...
决策树是一种基于树形结构进行决策分析的模型,它的每个内部节点表示一个特征或属性测试,每个分支代表一个测试输出,而叶节点则代表一个决策结果。这种直观易懂的模型使决策树成为业务分析和机器学习的首选工具。 ...
而递归结构则引入了时间序列或树形结构的处理能力,使得模型能处理序列数据或者具有层次关系的数据。在高光谱图像分析中,递归自动编码器可以捕捉到光谱数据的内在结构和序列依赖性,从而提高特征提取的效果。 具体...
例如,我们可能需要一个查询来获取所有分类及其子分类的信息,以便构建树形结构。 接着,我们要掌握如何在易语言中创建和操作树形框。这涉及到树形框的节点操作,如添加、删除和修改节点。在易语言中,可以通过...
在IT领域,递归算法是一种基础且强大的编程技术,它在处理树形结构、分治问题、搜索算法等场景中尤为常见。从给定的文件信息来看,虽然标题和描述中提到了“简单递归”,但提供的代码片段实际上并未直接展示递归的...
"根据数据库表结构自动生成产品结构树"这一技术,其核心是将数据库中的BOM数据转换成可视化、层次化的结构,以树形图的方式展示出来。这涉及到数据库查询、数据处理和图形化表示等多个方面的知识。 首先,我们需要...
8. **堆(Heap)**:一种特殊的树形数据结构,满足最大堆或最小堆性质。堆常用于优先队列和快速排序算法中。动画可能演示堆的构建、提取最大值/最小值和调整操作。 9. **排序算法**:如冒泡排序、选择排序、插入...
通过上述示例可以看出,虽然关系型数据库主要用于处理线性数据,但通过巧妙利用递归查询和用户定义函数等功能,我们仍然可以在SQL中高效地处理树形结构数据。这些技术不仅适用于SQL Server 2000,对于其他支持类似...
决策树是一种基于树形结构的分类模型,它将特征空间划分为一系列非重叠的区域,并为每个区域分配一个标签。决策树的构建过程可以使用递归的方式实现。 我们定义了一个Node结构体来表示决策树的节点,其中feature_...
- **动态调整**:通过动态调整树形结构,优化数据分布,减少不必要的搜索路径,进一步提升查询性能。 ##### 空间缩减优化 - **数据压缩**:采用编码技巧,对高维数据点进行压缩编码,减少索引结构所占用的存储空间...
这种树形结构在数据挖掘领域有着广泛的应用,尤其是在处理复杂的表达式和规则提取方面。 **1.2 表达式树的构建方法** - **中缀表达式的转换**:通常情况下,表达式树是从中缀表达式开始构建的。中缀表达式是指...