公司需求:导入员工信息时。需判断当前管理员的权限,当前管理员为超级管理员时可以导入公司所有部门的员工信息,部门管理员只能导入本部门及以下子部门的员工信息,特定部门只能导入特定部门的信息。
思考:特定部门和所有部门的容易实现,但是查询部门及其子部门不易实现。
1.方案一:可以在service层进行递归循环调用,一直递归循环到方法查询不到数据,
该方案缺点很显而易见,需要多次链接mysql进行查询,效率肯定不高。
2.方案二:写存储过程的方式,见下面大佬写的
MySQL中实现递归查询
该方案需要创建存储过程,不太推荐,具体见这位大佬
为什么不推荐使用存储过程?
3.方案三:sql本身递归查询
该sql使用了FIND_IN_SET精准查询,concat拼接函数
SELECT id FROM ( SELECT id, parent