后端快速完成组织树接口
一.前(bi)言(hua)
作为一个优秀的打工人,我又准时在8:30打卡,守时的一批。
为了提高工作效率我开始了…
摸鱼之后神清气爽,开始复盘:
作者排名:154658
钱包:一言难尽
嗯!现状良好具备挑战性,未来可期(欺)!
开干!!!
二.写接口如何快(zhuang)速(bi)
01.需求
实现组织架构查询功能
想要的数据结构
02.分析
树是无限极的,不确定级别。 需要使用递归查询
03.常规实现方式
查询一级数据,根据一级id进行递归查询,找到属于此数据的下级
04.天(zhuang)秀(bi)实现方式
查询所有组织架构数据,根据JAVA8新特性stream流完成树结构数据
第一步:筛选所有一级菜单
通过filter方法筛选,参数item就是遍历数据得到的一个元素,通过返回boolean值来确定是否要留下这个元素,Constant.root.equals(item.get(“parentId”)) 就是判断这个数据的父级id是不是0,如果是0那就是一级数据返回true 留下这个数据。
第二步:给一级数据添加下级数据
通过map方法对数据进行编辑,返回新的数据。
给数据赋值下级数据,getChilds方法就是获取下级数据方法。
通过filter过滤,找到父级id等于当前数据id的数据也就是这个当前数据子数据。
通过map方法,编辑当前子数据获取子数据的子数据进行递归获取。
第三步:排序
通过sorted方法进行排序,返回排序用到的值会自动排序默认正序。调用.reversed()方法进行倒序
第四步:通过collect方法将数据转为集合返回数据。
三.优缺
优:
一次查出数据库数据,避免频繁操作数据库,减轻数据库压力
缺:
性能糟糕,多次遍历
四.改进
1.查出数据直接返回到前端,由前端自己组装数据结构
服务器是一对多的承担压力大,将数据返回前端利用客户电脑资源完成工作。
2.缓存
组织架构不常改动,利用这一点业务特征可以将查询到的数据放到redis缓存,每次做写的操作(增删改)更新缓存
结束
我是想象致幻,一个天真、沙雕、想象力超强的沙雕
生如蝼蚁当立鸿鹄之志!!!加油!!!努力!!!