首页 > 其他分享 >效率高一点的快速树工具类

效率高一点的快速树工具类

时间:2023-06-15 18:23:07浏览次数:41  
标签:10 效率高 数据库 目录 列表 工具 查询 快速 节点

一、需求 :  (从数据库) 查询出 3下面所有的子节点数据 

二、普通实现方式

第1种:     可以使用数据库的递归函数直接实现,比如oracle数据库,

第2种:     查询出所有数据节点,再组装树形取出3节点(和子树形) ; 

第3种:     一直for 循环查询数据库 , 查询出 3 节点的儿子节点,  儿子节点再 循环查孙子节点...直到查不到再下面一级的子节点为止 ; 

 缺点:  

  第1种:  依赖于数据库函数,或者自己写数据库的函数(function)实现 ;

  第2种: 浪费性能和效率慢, 查询少量数据需要全表查一次 (这里不考虑缓存起来的情况,只考虑查数据库);

  第3种:  取决于要查的节点后面的深度(或者说层数), 越深 则查询数据库次数越多,比如有10层,需要至少查10次数据库 ; 另外: 每一种这样的业务列表,可能都需要写一套这样的循环逻辑 ;

 

 三、 高效的实现方式

首先,有一个前提条件: 

  数据类型节点 下面不能有子节点;  这样保证查找到每一个数据节点: 从 目录型(文件夹型)节点 ->目录型节点->....目录型节点->最后的数据节点 ;

思路: 

          1. 先查询数据库出所有的 目录型(文件夹型)节点, 根据type字段类查;比如查询出目录型节点有100个;

          2. 将目录型(文件夹型)节点组装成树形,找出需要查询的目录节点,比如 上面图中的3"债券信用分析", 可以获取到一个它下面的所有子目录节点列表 ,比如有10个;

          3.查询数据库, 找出父ID(pid) in ( 上面 10个目录节点ID ) 的 数据类型节点的数据节点列表 ;

          4. 用步骤3的数据节点列表 填充上面 10个目录节点的children列表,得到 3"债券信用分析" 的树节点 ;

 

 四、测试

   1. 测试--整个树节点

 

 2. 文科--下面节点树

 

五、项目代码使用示例

  业务service这里只用准备两个function,然后调用工具类就可以 ;

 

 六、代码实现

    1. 实体类上使用三个注解,表示id,pid,和children列表 ;

 

2 . tree方法

 

3. 查询当前节点和所有子节点的方法

 

 4. 反射方法 (getterIdMethod举例)

 

标签:10,效率高,数据库,目录,列表,工具,查询,快速,节点
From: https://www.cnblogs.com/coloz/p/17483110.html

相关文章

  • 分享几个免费设计生成工具 (第二期)
    今天来给大家分享几个国外免费的设计生成工具A.     Toolshttps://www.a.tools/一个免费实用的在线工具箱,提供了85个特色工具,包含图形图像、日期和时间、文本编辑器、解密和加密、编程与设计、图表生成器等等,还有热门的AI聊天提示生成器,番茄钟等等,并且还在不断的新增工具,......
  • 轻松掌握Python+主流测试框架Requests接口自动化,快速转型自动化测试
    轻松掌握Python+主流测试框架Requests接口自动化,快速转型自动化测试最近几年,自动化测试已经成为了软件测试的主流趋势,而Python语言和Requests库作为主流测试框架,也成为了越来越多测试工程师的首选。使用Python+Requests接口自动化进行测试,不仅可以提高测试效率和覆盖面,还可以降低......
  • 开源 PDF 库和工具 VS ComPDFKit
    在处理PDF文档时,开发人员可以选择开源PDF库和ComPDFKit等商业库。在本文中,我们将探讨ComPDFKit相对于开源PDF库的优势。 开源PDF库是免费的,任何想要使用它们的人都可以访问。它们在开源许可证下分发,并提供一些基本功能,例如阅读。因此,即使它是免费的,您可能会发现开源P......
  • qt——自己手动添加菜单栏、工具栏(自定义菜单栏、工具栏的位置)
    参考:原文链接 不一定非要用QGroupBox,其他继承自widget的控件都可以我的实现: ......
  • python篇:在编程过程中遇到的工具问题记录
    1,用pipinstallopencv-python安装cv2后,发现pycharm中importcv2不报错,但是cv2不能点出相关函数   1>使用pipuninstallopencv-python命令,卸载了通过pip安装的cv2包   2>在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应的安装包,例如我的python是3.8,电脑是6......
  • 快速开发框架:一招解锁企业流程化管理!
    在流程化管理时代,什么样的平台可以帮助企业实现高效率发展?在信息化爆炸式发展的今天,有很多企业期望能通过专用的快速开发框架实现提质增效发展。目前,低代码技术平台是较为盛行的平台,拥有易操作、灵活、增效等优势特点,在助力企业实现数字化管理、进入流程化发展的过程中发挥了巨大......
  • Mysql优化的思路以及工具的使用
    一,查询sql的执行效率MySQL客户端连接成功后,通过show[session|global]status命令可以提供服务器状态信息。show[session|global]status可以根据需要加上参数“session”或者“global”来显示session级(当前连接)的计结果和global级(自数据库上次启动至今)的统计结果。如果......
  • 「Python实用秘技14」快速优化Python导包顺序
    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills这是我的系列文章「Python实用秘技」的第14期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。作为系列第1......
  • delphi7使用QuickReport快速生成报表
    QuickReport报表组件是Delphi7之前版本广泛使用的数据库报表设计工具组件,在Delphi7版本中默认没有加载在Delphi7的工具栏上。因此,需要手动安装加载一下,安装QReport组件插件步骤如下:①在Delphi7中执行菜单[Component]==>[InstallPackages...];②点击按钮[Add...],出现‘AddDesi......
  • PaddleOCR 训练工具Win 10下安装步骤
           1、从这里面下载代码包,可能比较慢。     2、进入这个目录:      3、尝试运行E:\>cdE:\paddleOCR\PaddleOCR\PPOCRLabelE:\paddleOCR\PaddleOCR\PPOCRLabel>pythonPPOCRLabel.py--langchTraceback(mostrecentcalllast):......