基于Spring MVC + Spring + MyBatis的人事管理系统
Posted 明金同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Spring MVC + Spring + MyBatis的人事管理系统相关的知识,希望对你有一定的参考价值。
资源下载:https://download.csdn.net/download/weixin_44893902/33163160
一、语言和环境
- 实现语言:JAVA语言
- 环境要求:IDEA/Eclipse + Tomcat + mysql
- 使用技术:
Spring Boot
或SSM
二、实现功能
随着公司业务的发展,需要一款在线人事管理系统,主要功能如下:
- 首页默认显示所有员工信息,如图1所示。
- 鼠标悬停某行数据时,以线性过渡动画显示光棒效果,如图2所示。
- 用户可以单独通过选择职位进行查询,也可以单独输入名字进行模糊查询,也可以两个条件一起查询,如图3所示。
- 点击添加人员,跳转到添加页面。输入数据后,点击确定添加,跳转主页面并刷新数据。
- 用户点击删除,弹出提示框,用户点击确定后,删除选中数据并显示最新数据,如图5所示
三、数据库设计
-
创建数据库(
cqsw
)。 -
创建数据表(
tb_emp
),结构如下。
字段名 | 说明 | 字段类型 | 长度 | 备注 |
---|---|---|---|---|
emp_id | 员工编号 | int | 主键,自增,增量为1 | |
emp_name | 员工名称 | varchar | 50 | 不能为空 |
emp_position | 员工职位 | varchar | 不能为空 | |
emp_in_date | 员工入职时间 | Date | 不能为空 | |
emp_salary | 员工薪资 | float | 不能为空 | |
dept_id | 部门id | int | 不能为空 |
- 创建数据表(
tb_dept
),结构如下。
字段名 | 说明 | 字段类型 | 长度 | 备注 |
---|---|---|---|---|
dept_id | 部门编号 | int | 主键,自增,增量为1 | |
dept_name | 部门名称 | varchar | 50 | 不能为空 |
dept_address | 部门地址 | varchar | 不能为空 |
四、实现步骤
SSM版本的实现步骤如下:
- 创建
数据库
和数据表
,添加测试数据(至少添加4条测试数据)。 - 创建Web工程并创建各个包,导入工程所需的
jar
文件。 - 添加相关
SSM框架
支持。 - 配置项目所需要的各种配置文件(
mybatis配置文件
、spring配置文件
、springMVC配置文件
)。 - 创建实体类。
- 创建MyBatis操作数据库所需的
Mapper接口
及其Xml映射
数据库操作语句文件。 - 创建业务逻辑相应的接口及其实现类,实现相应的业务,并在类中加入对
DAO/Mapper的引用和注入
。 - 创建
Controller控制器类
,在Controller中添加对业务逻辑类的引用和注入,并配置springMVC配置文件
。 - 创建相关的操作页面,并使用CSS对页面进行美化。
- 实现页面的各项操作功能,并在相关地方进行验证,操作要人性化。
- 调试运行成功后导出相关的数据库文件并提交。
五、实现代码
1、MySQL数据库
cqsw.sql
/*
Navicat MySQL Data Transfer
Date: 2021-08-06 20:07:05
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `tb_dept`
-- ----------------------------
DROP TABLE IF EXISTS `tb_dept`;
CREATE TABLE `tb_dept` (
`dept_id` int(11) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(50) NOT NULL,
`dept_address` varchar(50) NOT NULL,
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_dept
-- ----------------------------
INSERT INTO `tb_dept` VALUES ('1', '技术部', '重庆商务职业学院');
INSERT INTO `tb_dept` VALUES ('2', '销售部', '沙坪坝');
INSERT INTO `tb_dept` VALUES ('3', '市场部', '沙坪坝');
-- ----------------------------
-- Table structure for `tb_emp`
-- ----------------------------
DROP TABLE IF EXISTS `tb_emp`;
CREATE TABLE `tb_emp` (
`emp_id` int(11) NOT NULL AUTO_INCREMENT,
`emp_name` varchar(50) NOT NULL,
`emp_position` varchar(50) NOT NULL,
`emp_in_date` varchar(100) NOT NULL,
`emp_salary` float NOT NULL,
`dept_id` int(11) NOT NULL,
PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7374 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_emp
-- ----------------------------
INSERT INTO `tb_emp` VALUES ('7369', '任盈盈', '职员', '1980-12-17', '800', '1');
INSERT INTO `tb_emp` VALUES ('7370', '杨逍', '销售人员', '1981-02-20', '1600', '2');
INSERT INTO `tb_emp` VALUES ('7371', '范瑶', '销售人员', '1981-02-22', '1250', '2');
INSERT INTO `tb_emp` VALUES ('7372', '任我行', '经理', '1981-04-02', '2975', '3');
INSERT INTO `tb_emp` VALUES ('7373', '卡卡西', '经理', '2021-08-06', '5000', '1');
2、项目Java代码
目录结构
cqsw_db
JAR包:
src
com.mhys.crm.controller【控制层】
Tb_empController.java
package com.mhys.crm.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mhys.crm.entity.TbEmp;
import com.mhys.crm.entity.Tb_emp_dept;
import com.mhys.crm.service.Tb_empService;
import com.sun.org.apache.xpath.internal.operations.Mod;
import com.sun.swing.internal.plaf.metal.resources.metal;
@Controller
public class Tb_empController {
@Resource
private Tb_empService service;
@RequestMapping("selectAll")
public String selectAll(Model model,Tb_emp_dept tb_emp_dept) {
if (tb_emp_dept.getEmpName()==null) {
tb_emp_dept.setEmpName("");
}
if (tb_emp_dept.getEmpPosition()==null) {
tb_emp_dept.setEmpPosition("");
}
List<Tb_emp_dept> list=service.selectAll(tb_emp_dept);
model.addAttribute("empList", list);
return "/account";
}
@RequestMapping("addPage")
public String addPage() {
return "/addAccount";
}
@RequestMapping("add")
public String add(TbEmp tbEmp) {
int rows=service.add(tbEmp);
return "redirect:selectAll.do";
}
@RequestMapping("delete")
public String delete(int id) {
int row=service.delete(id);
return "redirect:selectAll.do";
}
}
com.mhys.crm.dao【数据库访问层】
TbDeptMapper.java
package com.mhys.crm.dao;
import com.mhys.crm.entity.TbDept;
import java.util.List;
public interface TbDeptMapper {
int deleteByPrimaryKey(Integer deptId);
int insert(TbDept record);
TbDept selectByPrimaryKey(Integer deptId);
List<TbDept> selectAll();
int updateByPrimaryKey(TbDept record);
}
TbEmpMapper.java
package com.mhys.crm.dao;
import com.mhys.crm.entity.TbEmp;
import com.mhys.crm.entity.Tb_emp_dept;
import java.util.List;
public interface TbEmpMapper {
int deleteByPrimaryKey(Integer empId);
int insert(TbEmp record);
TbEmp selectByPrimaryKey(Integer empId);
List<TbEmp> selectAll();
int updateByPrimaryKey(TbEmp record);
//多表连查
List<Tb_emp_dept> selectEmp();
//模糊查询
List<Tb_emp_dept> selectEmpLike(Tb_emp_dept tb_emp_dept);
}
TbDeptMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mhys.crm.dao.TbDeptMapper" >
<resultMap id="BaseResultMap" type="com.mhys.crm.entity.TbDept" >
<id column="dept_id" property="deptId" jdbcType="INTEGER" />
<result column="dept_name" property="deptName" jdbcType="VARCHAR" />
<result column="dept_address" property="deptAddress" jdbcType="VARCHAR" />
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from tb_dept
where dept_id = #{deptId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.mhys.crm.entity.TbDept" >
insert into tb_dept (dept_id, dept_name, dept_address
)
values (#{deptId,jdbcType=INTEGER}, #{deptName,jdbcType=VARCHAR}, #{deptAddress,jdbcType=VARCHAR}
)
</insert>
<update id="updateByPrimaryKey" parameterType="com.mhys.crm.entity.TbDept" >
update tb_dept
set dept_name = #{deptName,jdbcType=VARCHAR},
dept_address = #{deptAddress,jdbcType=VARCHAR}
where dept_id = #{deptId,jdbcType=INTEGER}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select dept_id, dept_name, dept_address
from tb_dept
where dept_id = #{deptId,jdbcType=INTEGER}
</select>
<select id="selectAll" resultMap="BaseResultMap" >
select dept_id, dept_name, dept_address
from tb_dept
</select>
</mapper>
TbEmpMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mhys.crm.dao.TbEmpMapper" >
<resultMap id="BaseResultMap" type="com.mhys.crm.entity.Tb_emp_dept" >
<id column="emp_id" property="empId" jdbcType="INTEGER" />
<result column="emp_name" property="empName" jdbcType="VARCHAR" />
<result column="emp_position" property="empPosition" jdbcType="VARCHAR" />
<result column="emp_in_date" property="empInDate" jdbcType="DATE" />
<result column="emp_salary" property="empSalary" jdbcType="REAL" />
<result column="dept_id" property="deptId" jdbcType="INTEGER" />
<result column="dept_name" property="deptName" jdbcType="VARCHAR" />
<result column="dept_address" property="deptAddress" jdbcType="VARCHAR" />
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from tb_emp
where emp_id = #{empId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.mhys.crm.entity.TbEmp" >
insert into tb_emp (emp_id, emp_name, emp_position,
emp_in_date, emp_salary, dept_id
)
values (#{empId,jdbcType=INTEGER}, #{empName,jdbcType=VARCHAR}, #{empPosition,jdbcType=VARCHAR},
#{empInDate,jdbcType=DATE}, #{empSalary,jdbcType=REAL}, #{deptId,jdbcType=INTEGER}
)
</insert>
<update id="updateByPrimaryKey" parameterType="com.mhys.crm.entity.TbEmp" >
update tb_emp
set emp_name = #{empName,jdbcType=VARCHAR},
emp_position = #{empPosition,jdbcType=VARCHAR},
emp_in_date = #{empInDate,jdbcType=DATE},
emp_salary = #{empSalary,jdbcType=REAL},
dept_id = #{deptId,jdbcType=INTEGER}
where emp_id = #{empId,jdbcType=INTEGER}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select emp_id, emp_name, emp_position, emp_in_date, emp_salary, dept_id
from tb_emp
where emp_id = #{empId,jdbcType=INTEGER}
</select>
<select id="selectAll" resultMap="BaseResultMap" >
select emp_id, emp_name, emp_position, emp_in_date, emp_salary, dept_id
from tb_emp
</select>
<select id="selectEmp" resultMap="BaseResultMap" >
SELECT emp_id, emp_name, emp_position, emp_in_date, emp_salary,dept_name,
dept_address FROM tb_emp e,tb_dept d WHERE e.dept_id=d.dept_id
</select>
<select id="selectEmpLike" resultMap="BaseResultMap" >
SELECT emp_id, emp_name, emp_position, emp_in_date, emp_salary,dept_name,
dept_address FROM tb_emp e LEFT JOIN tb_dept d on e.dept_id=d.dept_id WHERE emp_position LIKE "%"#{empPosition}"%"
and emp_name like "%"#{empName}"%"
</select>
</mapper>
com.mhys.crm.entity【实体的包】
Tb_emp_dept.java
package com.mhys.crm.entity;
import java.util.Date;
public class Tb_emp_dept {
private Integer empId;
private String empName;
private String empPosition;
private Date empInDate;
private Float empSalary;
private Integer deptId;
private String deptName;
private String deptAddress;
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String以上是关于基于Spring MVC + Spring + MyBatis的人事管理系统的主要内容,如果未能解决你的问题,请参考以下文章
Spring+Spring mvc+Mybatis整合教程(基于Maven)
Spring : 基于注解的 Spring MVC( 上 )
基于Spring MVC + Spring + MyBatis的医院就诊挂号系统
基于Spring MVC + Spring + MyBatis的医院就诊挂号系统