资讯专栏INFORMATION COLUMN

优化项目中树结构数据的操作

cppowboy / 3648人阅读

摘要:最近在优化一段代码,前端使用的是,页面中有一个树形菜单。我想的方法比较直接,一次性查出所有数据,减少查库的频率,毕竟数据量也就那么多条。

最近在优化一段代码,前端使用的是Ext3,页面中有一个树形菜单。把项目放在本地跑,加载这个树形菜单的速度似乎还凑合,但是在正式环境中点开这个页面,这个树形菜单加载的就很慢了,很明显的感觉到卡壳了一下,于是去查看项目代码,大致思路是这样的,如下:

通过递归的方式不断去执行一个SQL,这个SQL是select ... from tb_tree tt where tt.parent_id = ? 这样的结构,将查出的数据拼成json串放前端Ext展示,表象看起来好像还行,思路相对还是比较清晰的。

但是,服务器放在了合肥,我在北京,每次这么递归查询都相当于从北京向合肥发请求,这么一来肯定是要消耗时间的,好在表数据不算多,整体存放在表中的树结构不算复杂,否则,难以想象。故优化势在必行。

我想的方法比较直接,一次性查出所有数据,减少查库的频率,毕竟数据量也就那么200多条。表结构就是常规的id、text、parent_id这样的,那我就想干脆通过Java构造一颗树,就是将SQL的这棵树转成Java的树,转好之后拼个json串岂不是so easy

写个树的实体类,我就用了这么几个属性


//getter、setter方法

还有一个生成树结构的工具类,里面有一个构造树的函数

通过构造树的方法将数据库中的数据转变为Java树,再变成json格式交给Ext来处理就大功告成啦

经测试,代码优化前生成的json串耗时332毫秒,优化后只有27毫秒

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68381.html

相关文章

  • FineReport中树数据集如何实现组织树报表

    摘要:组织树报表中由与父来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此提供了一种特殊的数据集树数据集,只需要简单的设置就能自动递归出层级,方便的实现如下图组织树报表图一图二构建树新建报表,添加数据集新建工作薄,添 组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据...

    Travis 评论0 收藏0
  • FineReport中树数据集如何实现组织树报表

    摘要:组织树报表中由与父来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此提供了一种特殊的数据集树数据集,只需要简单的设置就能自动递归出层级,方便的实现如下图组织树报表图一图二构建树新建报表,添加数据集新建工作薄,添 组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据...

    Dongjie_Liu 评论0 收藏0
  • 图表推荐:甘特图与框架图,大数据流向地图重磅来袭!

    摘要:普通甘特图带里程碑的甘特图带关联线的甘特图状态甘特图多项目轴甘特图二框架图框架图常用来表示组织层级关系,因此又可称之为层级关系图。 帆软图表(新特性)最新版本的图表插件新增了甘特图与框架图两种图表类型,大大方便了生产管理所需,同时支持流向地图的大数据模式。一.甘特图甘特图又称任务计划进度图,其通常用来表示项目进展随着时间进度的变化。甘特图被广泛的应用在各行业的项目管理中,因此帆软在最新...

    DataPipeline 评论0 收藏0
  • 图表推荐:甘特图与框架图,大数据流向地图重磅来袭!

    摘要:普通甘特图带里程碑的甘特图带关联线的甘特图状态甘特图多项目轴甘特图二框架图框架图常用来表示组织层级关系,因此又可称之为层级关系图。 帆软图表(新特性)最新版本的图表插件新增了甘特图与框架图两种图表类型,大大方便了生产管理所需,同时支持流向地图的大数据模式。一.甘特图甘特图又称任务计划进度图,其通常用来表示项目进展随着时间进度的变化。甘特图被广泛的应用在各行业的项目管理中,因此帆软在最新...

    OnlyMyRailgun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<