vhr部门管理数据库设计与编程
vhr部门管理模块更新啦!为了让小伙伴们快速理解部门管理模块实现思路,我想通过3篇短文来给大家介绍下大致的实现思路和核心代码。本文是[SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题]系列的延续,建议小伙伴们先阅读前面的文章,会有助于你理解本文。
1.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
2.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二)
3.SpringSecurity中密码加盐与SpringBoot中异常统一处理
4.axios请求封装和异常统一处理
5.权限管理模块中动态加载Vue组件
6.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(六)
项目地址:https://github.com/lenve/vhr
好了,那我们本文主要来看看数据库的设计与存储过程的编写。
部门数据库整体来说还是比较简单,如下:
都是常规字段,脚本可以在项目中下载。depPath是为了查询方便,isParent表示该条是否是父部门。为了简化程序中的逻辑,depPath的设置和isParent的设置我都在存储过程中完成。
添加部门存储过程
添加部门存储过程如下:
DELIMITER $$USE `vhr`$$DROP PROCEDURE IF EXISTS `addDep`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `addDep`(in depName varchar(32),in parentId int,in enabled boolean,out result int,out result2 int)
begindeclare did int;declare pDepPath varchar(64);insert into department set name=depName,parentId=parentId,enabled=enabled;select row_count() into result;select last_insert_id() into did;set result2=did;select depPath into pDepPath from department where id=parentId;update department set depPath=concat(pDepPath,'.',did) where id=did;update department set isParent=true where id=parentId;
end$$DELIMITER ;
关于这个存储过程,我说如下几点:
1.该存储过程接收五个参数,三个输入参数分别是部门名称、父部门Id,该部门是否启用,两个输出参数分别表示受影响的行数和插入成功后id的值。
2.存储过程首先执行插入操作,插入完成后,将受影响行数赋值给result。
3.然后通过last_insert_id()
获取刚刚插入的id,赋给result2。
4.接下来查询父部门的depPath,并且和刚刚生成的id组合后作为刚刚插入部门的depPath。
5.将父部门的isParent字段更新为true。
将这些逻辑写在存储过程中,可以简化我们代码中的逻辑。
删除部门存储过程
删除部门也被我写成了存储过程,主要是因为删除过程也要做好几件事,核心代码如下:
DELIMITER $$USE `vhr`$$DROP PROCEDURE IF EXISTS `deleteDep`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteDep`(in did int,out result int)
begindeclare ecount int;declare pid int;declare pcount int;select count(*) into ecount from employee where departmentId=did;if ecount>0 then set result=-1;else select parentId into pid from department where id=did;delete from department where id=did and isParent=false;select row_count() into result;select count(*) into pcount from department where parentId=pid;if pcount=0 then update department set isParent=false where id=pid;end if;end if;
end$$DELIMITER ;
关于这个存储过程,我说如下几点:
1.一个输入参数表示要删除数据的id,一个输出参数表示删除结果。
2.如果该部门下有员工,则该部门不能被删除。
3.删除该部门时注意加上条件isParent=false,即父部门不能被删除,这一点我在前端已经做了判断,正常情况下父部门的删除请求不会被发送,但是考虑到前端的数据不能被信任,所以后台我们也要限制。
4.删除成功之后,查询删除部门的父部门是否还有其他子部门,如果没有,则将父部门的isParent修改为false。
其他一些琐碎的技术就不值得介绍了,大家在源码中自行研究,有问题欢迎留言讨论。
关注公众号,可以及时接收到最新文章:
vhr部门管理数据库设计与编程相关推荐
- 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...
- SQL——一种简单的基于角色控制的权限管理数据库设计DEMO
-- ---------------------------- -- Table structure for resource -- ---------------------------- DROP ...
- web-ylbtech(合同管理)-数据库设计
ylbtech-DatabaseDesgin:web-ylbtech(合同管理)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 /App_Data/sql-basic.sql View C ...
- ylbtech-Bill(发票管理)-数据库设计
ylbtech-dbs:ylbtech-Bill(发票管理)-数据库设计 -- ============================================= -- DatabaseNam ...
- 合同管理数据库设计mysql_工程合同管理信息系统的数据设计理念
一.工程合同管理流程系统数据库设计 建立数据库是为了更有效地管理数据.获取信息,一般的用户都是通过应用程序使用数据库的,用户的应用程序体现了信息系统的功能.设计数据库和设计建立在数据库之上的应用程序是 ...
- 学生宿舍管理数据库设计(下)
一.系统开发概述 3 1.1 系统开发背景 3 1.2 系统功能需求分析 3 1.3 系统性能需求分析 4 1.4 系统数据流程分析 5 二.数据库概念结构设计 5 2.1 数据库局部E-R图 5 2 ...
- 学生宿舍管理数据库设计(上)
一.系统开发概述 3 1.1 系统开发背景 3 1.2 系统功能需求分析 3 1.3 系统性能需求分析 4 1.4 系统数据流程分析 5 二.数据库概念结构设计 5 2.1 数据库局部E-R图 5 2 ...
- 基于角色的权限管理数据库设计(RBAC)
来源:http://hi.baidu.com/%CD%F5%BF%C6%BE%FC/blog/item/b9bf7f13b0551e1cb8127b6f.html */ use [master] go ...
- python管理数据库设计_Pycharm+Django+Python+MySQL开发 后台管理数据库
Django框架十分简单易用,适合搭建个人博客网站.网上有很多教程,大多是关于命令行操作Django,这里分享一些用最新工具进行Django开发过程,主要是PyCharm太强大,不用有点可惜. 第一次 ...
最新文章
- DNS基本原理与配置
- 开发日记-20190817 关键词 Hello Unix
- html form label标签基础语法结构与使用案例教程(转载)
- 面试官问:为什么String的hashCode选择 31 作为乘子?
- 【语法解释】init
- 综合布线机房服务器维护,信息机房的综合布线系统维护
- .NET的一点历史故事:误入歧途,越陷越深
- python nodemcu_python开发nodemcu(一)
- 记录A component required a bean named ‘studentService‘ that could not be found.
- linux tcb,在Linux中从潜藏密码迁移至tcb怎么做?
- 新零售讲堂之时代下的传统零售业,何去何从?
- 《设计模式沉思录》—第2章2.4节访问权限
- Python实现人工神经网络逼近股票价格
- 浅谈跨平台框架 Flutter 的优势与结构 1
- pythonwin下载中文版_Python官方下载 v3.9.0中文版_Win10镜像官网
- haneWin NFS服务器配置
- 精灵3P+Pix4D简单航测详细应用教程
- 实战 SQL:实现百度、高德等地图中的地铁换乘线路查询
- Office2016 打开excel出现丢失appvisvsubsystems32.dll
- 数一数你连听都没听过的古典小说有多少?
热门文章
- pytorch开发工具
- 线程中断:interrupt、interrupted、isInterrupted
- Android代码中实现WAP方式联网
- Spark抽取MySQL分表优化
- sentos7查看网络配置_怎么查看centos7的网络配置
- 文件cpy改进,文件加密,对文件两次运算可解密,密码65
- oracle窗口设置,ORACLE安装DISPLAY变量设置 go with
- java 生成UUID字符串工具类 UUIDUtil
- java 排序库_Java数据库排序
- 台大郭彦甫_MATLAB视频笔记(六)图形界面_GUI程序设计