若依框架---树状层级部门数据库表
创始人
2024-05-24 01:26:44
0

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者
📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人

  

问题起源

最近接手的某款办公软件,其中要添加一些额外的功能,涉及到树状层级的部门,人员查找。又最近在学习若依管理系统,其中也设计到层级的部门管理,查看了其中的部门表设计与一些SQL编写,发掘有一些小小的差异,即可带来检索与查找的极大遍历。容我们慢慢道来。

若依中的dept表设计

若依系统中的sys_dept表设计字段如下:

 若依系统中添加部门的操作页面如下:

 

 

我们选几个重点字段说一下:

  1. parent_id字段:表明当前部门的上级部门节点id;
  2. order_num:表明当前部门在其上级部门下的排序次序;
  3. ancestors: 注释为“祖级列表”,我们来看一下表中的数据以及对应的真实的数据结构:

比如,若依中默认的部门级结构如下:

 

我们来看一下其中"若依科技->深圳总公司->研发部门"的数据库具体数据,尤其是ancestors数据是什么样的:

 

如图所示,研发部门的ancestors数据为“0,100,101”,0为所有部门父级,不表示具体部门,如果一个部门的父级只有0,表明其为最高级的部门;100表示dept_id=100的若依科技,101表示dept_id=101的深圳总公司。

乍一看这个字段设计的如此复杂,需要保存从最高级直到本级中的所有部门节点,给保存、更新带来了很大的复杂度,这样设计有什么好处呢?

另一种常用设计

说是另一种常用设计,更准确是说是我们当前系统的表设计,为了不违反公司相关规章,这里我就不贴真实的数据库表截图了,大概是这样的:

iddept_nameparent_id
1总公司0
2一级部门1
3二级部门2

即仅通过一个parent_id来表明层级关系,这样带来的一个显而易见的好处便是保存与更新带来的操作比较简单。

差异

差异就在于若依中的层级表设计有字段来保存部门祖级的所有节点。最近实现业务代码涉及到这块儿功能才发觉其有很好的实用性。

列举所有子部门

层级结构中最常见的一个业务是列出部门下的所有子部门,那么应该如下编写代码呢?

显然,如果没有ancestors的帮助,我们需要在代码中通过parent_id逐层逐级的遍历列举以及合并列表,而有了ancestors帮助,我们只需要一行SQL语句:

.....WHERE dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set('100', ancestors ) )

逐级查找所有父级部门

这种业务通常处于低级部门规则覆盖高级部门规则的场景下,即部门人员总是采用部门层级最接近自己的部门的规章,按照这一原则来实现代码的话,ancestors直接列举出了从高到底各个层级部门,而仅有parent_id则需要通过代码来循环查找父级部门。

 

专栏:若依框架 

 

                                                                      关注公众号,领取资料。 

相关内容

热门资讯

香水百合(通用4篇) 香水百合 篇一:追寻芬芳之旅香水百合,一种散发着迷人芬芳的花朵,常常被人们用来制作香水。它的美丽和独...
我们是一家人学生作文500字... 我们是一家人学生作文500字 篇一我们是一家人家,是一个温暖的港湾,是一个永远的归宿。在这个家庭中,...
你是我最崇拜的人小学作文(经... 你是我最崇拜的人小学作文 篇一我最崇拜的人是我的爸爸。他是一个非常了不起的人,他不仅是我的爸爸,还是...
小V过生日小学作文【实用3篇... 小V过生日小学作文 篇一我的好朋友小V过生日了!今天是她的生日,我早早地就起床了,准备给她一个惊喜。...
住在我心里的人作文【实用3篇... 住在我心里的人作文 篇一我的父亲,住在我心里的人在我心中,有一个特别的角落,专门为我亲爱的父亲而设。...
打雪仗的小学作文(优选3篇) 打雪仗的小学作文 篇一:我和朋友们的欢乐雪战冬天来了,大地披上了洁白的雪衣。我和朋友们迫不及待地跑到...
中秋赏月的小学作文(优质6篇... 中秋赏月的小学作文 篇一中秋佳节,是我国传统的重要节日之一。这一天,我们会和家人、朋友一起赏月、吃月...
坐地铁和摘小番茄作文【优秀3... 坐地铁和摘小番茄作文 篇一坐地铁和摘小番茄我喜欢坐地铁,因为它是一种方便快捷的交通工具。每天上下班,...
两代鸟的交谈作文【推荐3篇】 篇一:两代鸟的交谈近日,我在公园里目睹了一场令人惊叹的景象,一只年轻的鸟儿和一只老年鸟儿正在愉快地交...
一年级关于英雄事迹的作文50... 一年级关于英雄事迹的作文500字 篇一:《我的英雄》我的英雄是我的爸爸。他是一位普通的上班族,每天都...
记一件事小学生作文(精彩6篇... 记一件事小学生作文 篇一我和小狗的故事今天,我要给大家讲一个关于我和小狗的故事。这个故事发生在我上小...
抗击新型肺炎作文【通用5篇】 抗击新型肺炎作文 篇一:团结一心,共克时艰新型冠状病毒肺炎疫情突如其来,给我们的生活带来了巨大的冲击...
我可怜的橡皮泥状物作文【优质... 我可怜的橡皮泥状物作文 篇一橡皮泥是我最喜欢的玩具之一,可是它现在变得可怜兮兮的了。曾经,它是我快乐...
一年级作文水牛【经典6篇】 一年级作文水牛 篇一水牛是我国常见的牲畜之一,它们体型庞大,力大无穷,是农民朋友们的好帮手。今天,我...
我和我的好朋友作文【精彩6篇... 我和我的好朋友作文 篇一好朋友,是我们成长中最重要的陪伴。我有一个好朋友,她叫小芳。我们从小学开始就...
耳朵、鼻子和眼睛小学作文(推... 耳朵、鼻子和眼睛小学作文 篇一标题:我的耳朵、鼻子和眼睛我的耳朵、鼻子和眼睛是我身体上非常重要的器官...
课本剧表演作文(精选6篇) 课本剧表演作文 篇一我们班级最近进行了一次精彩的课本剧表演,给我们带来了很多乐趣和收获。这次表演的题...
最重要的一天小学作文【优选3... 最重要的一天小学作文 篇一最重要的一天小学作文今天是我人生中最重要的一天,因为我终于迎来了小学毕业典...
大爱无疆的作文(推荐6篇) 大爱无疆的作文 篇一无论身处何地,无论面对何种困境,大爱无疆的精神都是我们应该秉持的。在这个充满爱与...
二十年后的我小学作文(推荐6... 二十年后的我小学作文 篇一我是一名小学生,现在正在写一篇关于二十年后的我小学作文。在二十年后,我已经...