项目基于SSM框架(spring+ springMVC+mybatis)并利用eclipse+tomcat+mysql进行开发,其中springMVC实现Web层(显示层),mybatis实现持久层(数据层),spring贯穿三层框架,主要用以实现业务层(逻辑层)。人事管理系统包括用户管理、部门管理、职位管理、员工管理、公告管理、下载中心六大模块。
设计目的:小组成员通过人事管理系统的设计,进一步巩固自己课堂上学习的知识,以实践得以锻炼,提升自己的沟通能力和合作意识。
负责内容:用户模块和部门模块的功能实现、测试与BUG修复。
操作系统:Win10
编程语言:Java
编程环境:Eclipse IDE for Enterprise Java Developers
后端技术:Spring5基础系列、Mybatis3.0、mysql8.0、Log4j12日志
前端技术:JQuery、Easyui
数据库共由7个数据表组成,分别为用户(user)表,权限(role)表,部门(dept)表,职位(job)表,员工(employee)表,公告(notice)表,文件上传(uploadfile)表。
数据库E-R图
User表
Dept表
Job表
Employee表
Notice表
Role表
Uploadfile表
(1)主界面模块
该模块提供人事管理系统的主页面,用户通过此页面选择并调用其他子模块。
(2)用户管理模块
该模块提供用户的添加、查询、删除、修改。
(3)部门管理模块
该模块提供部门的添加、查询、删除、修改。
(4)职位管理模块
该模块提供职位的添加、查询、删除、修改。
(5)员工管理模块
该模块提供员工的添加、查询、删除、修改。
(6)公告管理模块
该模块提供公告的添加、查询、删除、修改。
(7)下载中心模块
该模块提供文件的上传和下载。
用户在用户添加页面填写相应的信息后,系统将从浏览器获得的数据提交到逻辑层,控制端在检查用户账号未被注册等一系列条件后,调用服务端的添加用户至数据库接口进行对数据库的操作,并在逻辑层完成相应的逻辑处理,最后将结果反馈到浏览器。
在用户查询页面,通过直接从数据库调用输出全部数据的接口,让用户直观地看到数据库User表中的所有数据,当用户想要通过模糊查询来得到结果的时候,需要输入与结果相同的部分数据,服务端通过Criteria查询在数据库中查询到与之相对应的数据后,反馈到逻辑层进行逻辑处理后将数据输出到浏览器上。如果用户想修改或者删除某项数据,控制端会直接调用带有对应数据库函数的服务端接口进行操作,并将结果反馈到浏览器上。
用户在添加页面填写表单信息并进行部门名称唯一性验证,验证通过后提交表单数据到后台。后台调用实体映射接口与数据库进行交互,并把本次操作结果返回到前端用户界面。
用户在前端填写查询表单后,在后台映射接口中使用Mybatis提供的Criteria对象进行查询条件的添加,然后把从数据库返回的结果以json格式返回前端用户界面。
把前端用户填写的表单数据提交到后台的过程中往往会出现无法接收到的情况。具体表现情况有返回404,500响应码。
经浏览器反复调试发现,问题常常出在元素的'name'属性要与后台相同,构造的json不完整。另外前端控件"easyui-datetimebox"的值,后台使用"Date"类型无法接收,最后只能使用"String"类型进行接收。
由于主键和唯一性等数据库的约束存在,当插入的数据在数据库中已存在时,程序会崩溃和报错。这是因为Mybatis自动生成的sql语句并没有针对这种情况进行处理。
用"insert ignore into"来代替"insert into"忽略错误的数据插入。对表单进行有效验证和使用ajax查询数据库是否已存在该项,若已存在则阻止并要求用户按要求填写。
项目要求对每个数据表表项进行增删改查操作进行映射,这无疑是巨大且枯燥的工作,同时这也是容易出错的地方。
使用Mybatis的生成器自动生成数据库与JDBC的映射关系,提高开发效率。数据表的连接需要自己编写。
JavaEE主要应用在系统后台开发,Spring,SpringMVC,Mybatis框架的使用使开发者能快速搭建项目。JQuery封装和简化了JavaScript的使用,实现高效率开发。
通过本次实验,我再一次认清“师傅领进门,修行靠个人”,整个过程中暴露了我基础不稳和面向过程的编程**,缺乏团队合作和沟通能力,思维僵化,没有系统化规划和分析,使得在编程时走了很多弯路,吃了很多的亏。后来直面困难,通过不断的调试以及网上自我学习解决了问题。