`
gege_s
  • 浏览: 18756 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

树形结构之五 数据提取-递归查询

阅读更多

 

也是关于树型结构的内容 ,就是数据库递归查询,我在项目中用的是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,其实就是一个普通的查询语句。

分享到:
评论

相关推荐

    SQL语句-递归查询、分组、统计.pdf

    - 递归查询主要用于处理层级数据,例如组织结构、树形菜单等。在Oracle数据库中,我们可以使用`CONNECT BY`子句实现递归查询。 - 1.2.1 递归查询:通过`CONNECT BY`和`PRIOR`关键字,从指定的根节点(`t.orgid = ...

    部分普通sql查询在hive中的实现方式

    Hive是一款基于Hadoop的数据仓库工具,能够对存储在Hadoop文件系统中的数据集进行数据提取、转换、加载(ETL),这是一种可以简化MapReduce编程的工具。由于Hive的设计初衷是让用户能够使用类SQL的查询语言“HiveQL...

    文件递归-XML递归-树图递归

    树形结构是一种非线性的数据结构,通常用来表示层次化的数据。在实际应用中,树形结构被广泛应用于数据库中的多级分类等场景。树图递归涉及到的是如何通过递归算法遍历树形结构的数据,并对其进行处理。 **实现细节...

    thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法

    在介绍thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法时,需要掌握的核心知识点主要集中在以下几个方面: 首先,理解thinkPHP框架中递归的概念。递归是一种常见的编程技术,是指函数直接或间接调用自身的...

    js树形结构,可在txt中取值

    在这个场景中,我们需要将一个用if、else语句实现的树形结构转换为递归函数,以便更高效地在文本文件(如TXT)中查找和提取值。 首先,理解树的基本概念是至关重要的。树由节点(Node)组成,每个节点可能有零个、...

    java解析xml动态生成树形菜单结构

    然后,我们可以遍历`doc`对象,提取菜单项,构建树形结构。每层菜单可以表示为一个`Node`对象,通过递归方法构建树。对于无限层的菜单,我们需要一个自定义的数据结构(如`TreeNode`类),并且在遍历过程中不断添加...

    iOS 树形结构

    在iOS开发中,树形结构是一种常见的数据组织方式,它以节点的形式呈现,每个节点可以有零个或多个子节点,这些子节点又可以有自己的子节点,形成一个层级关系。这种结构广泛应用于文件系统、数据解析(如XML、JSON)...

    使用递归算法结合数据库解析成Java树形结构的代码解析

    使用递归算法结合数据库解析成Java树形结构的代码解析是指通过...使用递归算法结合数据库解析成Java树形结构的代码解析可以将树形结构数据从数据库中提取出来,并将其转换为Java树形结构,方便地在Java应用程序中使用。

    算法数据结构体系学习班课程-视频教程网盘链接提取码下载 .txt

    - 堆:特殊的树形数据结构,常用于实现优先队列。 - 图:用于表示实体间的复杂关系。 #### 三、教学方法与实践 - **理论讲解**:详细介绍每种算法和数据结构的定义、特性、适用场景及其优缺点。 - **编程实践**...

    数据结构提取器软件资料

    1. **遍历算法**:对于树形结构,如二叉树,提取器可能使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历节点,获取所需数据。 2. **哈希函数**:在哈希表中,提取器利用哈希函数将数据映射到特定位置,快速查找和...

    数据挖掘---决策树

    决策树是一种基于树形结构进行决策分析的模型,它的每个内部节点表示一个特征或属性测试,每个分支代表一个测试输出,而叶节点则代表一个决策结果。这种直观易懂的模型使决策树成为业务分析和机器学习的首选工具。 ...

    行业分类-外包设计-基于递归自动编码的高光谱特征学习方法的说明分析.rar

    而递归结构则引入了时间序列或树形结构的处理能力,使得模型能处理序列数据或者具有层次关系的数据。在高光谱图像分析中,递归自动编码器可以捕捉到光谱数据的内在结构和序列依赖性,从而提高特征提取的效果。 具体...

    简单递归.txt

    在IT领域,递归算法是一种基础且强大的编程技术,它在处理树形结构、分治问题、搜索算法等场景中尤为常见。从给定的文件信息来看,虽然标题和描述中提到了“简单递归”,但提供的代码片段实际上并未直接展示递归的...

    根据数据库表结构自动生成产品结构树

    "根据数据库表结构自动生成产品结构树"这一技术,其核心是将数据库中的BOM数据转换成可视化、层次化的结构,以树形图的方式展示出来。这涉及到数据库查询、数据处理和图形化表示等多个方面的知识。 首先,我们需要...

    数据结构-flash动画演示

    8. **堆(Heap)**:一种特殊的树形数据结构,满足最大堆或最小堆性质。堆常用于优先队列和快速排序算法中。动画可能演示堆的构建、提取最大值/最小值和调整操作。 9. **排序算法**:如冒泡排序、选择排序、插入...

    用SQL实现树的查询

    通过上述示例可以看出,虽然关系型数据库主要用于处理线性数据,但通过巧妙利用递归查询和用户定义函数等功能,我们仍然可以在SQL中高效地处理树形结构数据。这些技术不仅适用于SQL Server 2000,对于其他支持类似...

    决策树实现iris鸢尾花分类-C++

    决策树是一种基于树形结构的分类模型,它将特征空间划分为一系列非重叠的区域,并为每个区域分配一个标签。决策树的构建过程可以使用递归的方式实现。 我们定义了一个Node结构体来表示决策树的节点,其中feature_...

    高维点数数据的索引与查询.pptx

    - **动态调整**:通过动态调整树形结构,优化数据分布,减少不必要的搜索路径,进一步提升查询性能。 ##### 空间缩减优化 - **数据压缩**:采用编码技巧,对高维数据点进行压缩编码,减少索引结构所占用的存储空间...

    表达式树在数据挖掘中的应用.pptx

    这种树形结构在数据挖掘领域有着广泛的应用,尤其是在处理复杂的表达式和规则提取方面。 **1.2 表达式树的构建方法** - **中缀表达式的转换**:通常情况下,表达式树是从中缀表达式开始构建的。中缀表达式是指...

    生物数据挖掘-决策树实验报告.docx

    决策树的基本原理是通过树形结构对数据进行分类,这种结构直观地展示了决策过程。在构建决策树的过程中,算法会根据数据集的特征进行分割,以达到最佳的分类效果。ID3算法是决策树的经典实现,它依赖于信息熵这一...

Global site tag (gtag.js) - Google Analytics