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

最近在优化一段代码,前端使用的是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

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

clipboard.png
//getter、setter方法

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

clipboard.png

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值