关于项目中出现的多层级菜单的实现方法

关于项目中出现的多层级菜单的实现方法

在项目开发中,经常会有多层级菜单的功能需求需要实现,实现多层级菜单一般都是采取递归的方式进行逐级遍历,但是这种方式存在明显的不足,就是当层级关系比较深时,通过父级去递归对应的子级,子级去递归自己的子级时,如果涉及到数据库的查询,那么就会多次发送SQL查询语句去数据库查询,造成数据库访问剧增,严重影响系统功能的响应速度,造成不好的用户体验。这里,我给大家介绍一种优化的方式来实现同样的功能需求,在介绍之前,先给出常规递归的实现方式。

  1. 说明
    博主给出的例子中,采用了基于Vue的前端框架ElementUI的树形菜单控件,后端采用MyBatis-Plus查询数据库给前端返回需要的数据形成树形菜单。

  2. 界面效果
    形如这种的树形效果
    在这里插入图片描述

  3. 实体类关系配置
    表示商品类型的实体类中增加子类的集合,用户保存当前父级类型对应的子类型
    在这里插入图片描述
    在这里插入图片描述

  4. service层主要实现代码如下【递归方式】
    在这里插入图片描述在这里插入图片描述明显看代码可以看出,使用这种方式会发送很多次查询去访问数据库,效率很低。

  5. 下面给出一种优化的方式,这种方式只需要查询一次数据库。其核心思想就是通过循环判断。
    在这里插入图片描述

  6. 然后前端发出请求直接访问后端的服务【这里调用的是通过循环查询的服务接口】
    前端的请求访问
    在这里插入图片描述
    在这里插入图片描述

    后端的接口
    在这里插入图片描述

  7. 请求响应中的数据
    在这里插入图片描述
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值