SSM实战项目,基于Spring+SpringMVC+mybatis实现的人事管理系统源码+数据库+使用说明

news2024/12/25 13:12:10

SSM实战项目:人事管理系统(蓝色版)

一、员工管理系统项目说明:

该项目主要是完成Spring+SpringMVC+mybatis的完整整合,功能实现比较单一,就是一个完成增删改查的小项目!

完整代码下载地址SSM实战项目,人事管理系统源码+数据库+使用说明

1、整个项目实现功能

1、管理员的登录,注册<br />2、员工的增删改查,批量删除<br />整个系统设计的目标人群是管理者,系统的主要功能是对员工进行各种信息的操作。<br />主要是完成对数据库的增删改查的功能。

2、开发环境

分类名称语种
操作系统windows10简体中文
数据库平台MySQL Server 8.0+
应用服务器apache-tomcat-8.5.71
java开发工具idea
框架mybatis+Spring+SpringMVC
项目名称《学生教务系统》
实现技术mybatis+Spring+SpringMVC+mysql+Servlet+jquery+bootStrap+js+Maven+tomcat等技术

3、数据库表设计

-- 创建员工表
create table t_emp(
id int primary key auto_increment,
name varchar(20) not null,
salary double not null,
age int not null
)

-- 添加员工数据
insert into t_emp values(null,'王恒杰',20000,21);
insert into t_emp values(null,'杨福君',9000,19);
-- 查询员工数据
select * from t_emp;

-- 创建管理员表
create table t_admin(
  id    int  primary key auto_increment,
 username varchar(20),
 password varchar(50)
)
-- 添加数据
insert into t_admin values(null,'王恒杰','123456');
-- 查询
select * from t_admin

4、Maven导入项目所依赖的jar包

  <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <!--springmvc核心依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <!--servlet-api-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <!--jsp-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
        </dependency>
        <!--jstl标签库-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--mysql驱动jar-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <!--mybatis相关依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!--mybatis和spring的整合jar-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>

5、Spring+mybatis整合工厂(applicationContext.xml)

    <!--1.开启注解扫描-->
    <context:component-scan base-package="com.tjcu.whj"></context:component-scan>
  
    <!--2.加载 jdbc.properties小配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
   
    <!--3.加载数据源-->
    <bean class="com.alibaba.druid.pool.DruidDataSource" name="dataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!--4.SqlSessionFactory-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
        <!--1.依赖于数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--2:mapper文件-->
        <property name="mapperLocations" value="classpath:com/tjcu/mapper/*DaoMapper.xml"></property>
        <!--3.别名-->
        <property name="typeAliasesPackage" value="com.tjcu.whj.entity"></property>
    </bean>
    
    <!--5.dao-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <!--依赖于DAO接口类型  -->
        <property name="basePackage" value="com.tjcu.whj.dao"></property>
    </bean>
    
    <!--6.事务管理器-->
    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!--7.开启注解式事务控制-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

6、Spring+SpringMVC整合工厂(Spring-mvc.xml)

  <!--1.开启注解式扫描-->
    <context:component-scan base-package="com.tjcu.whj"></context:component-scan>
    <!--2.注册处理器映射器(解析URL路径)handlerMapping,处理器适配器:参数处理handlerAdapter-->
    <mvc:annotation-driven/>
    <!--3.注册视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--4.处理静态资源拦截问题-->
    <mvc:default-servlet-handler/>

二、管理员登录/注册模块功能开发

  • 功能模块:登录,注册,注销,密码加密

  • 注册示意图

  • 登录示意图

1、dao层(adminDao.java)

public interface AdminDao {
    /**
     * 登录
     * @param admin
     * @return
     */
    public Admin login(Admin admin);
    /**
     *  注册
     * @param admin
     */
    public void register(Admin admin);
}

2、Service层

(1)adminService接口层
public interface AdminService {
    /**
     * 登录
     * @param admin
     * @return
     */
    public Admin login(Admin admin);
    /**
     *  注册
     * @param admin
     */
    public void register(Admin admin);
}
(2)adminServiceImpl实现类
@Service("adminService")
@Transactional
public class AdminServiceImpl implements AdminService {

    @Autowired
  private AdminDao adminDao;

    @Override
    public Admin login(Admin admin) {

        return adminDao.login(admin);
    }

    @Override
    public void register(Admin admin) {
         adminDao.register(admin);
    }
}

3、功能测试(adminTest)

public class AdminTest {
    @Test
    public void login(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        AdminService adminService = (AdminService) context.getBean("adminService");
        Admin admin = new Admin(null,null, "王恒杰", "123456",true);

        Admin login = adminService.login(admin);
        System.out.println(login);
    }

    @Test
    public void register(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        AdminService adminService = (AdminService) context.getBean("adminService");
        Admin admin = new Admin(null, "风犬少年","邓正武", "234567",true);
        adminService.register(admin);
    }
}

4、Controller层

@Controller("adminController")
@RequestMapping("admin")
public class AdminController {
    /**
     * 将adminService到AdminController中
     */
    @Autowired
    private AdminService adminService;

    /**
     * 登录
     * @param admin
     * @return
     */
    @RequestMapping("login")
    public String login(Admin admin,HttpServletRequest request){
        String password = MD5Utils.md5(admin.getPassword());
        admin.setPassword(password);
        Admin admin1 = adminService.login(admin);
        System.out.println(admin1);
        if(admin1!=null){
            request.getSession().setAttribute("admin",admin1);
            return "redirect:/emp/show";
        }
       return "redirect:/login.jsp";
    }
    /**
     *  注册
     * @param admin
     */
    @RequestMapping("register")
    public String register(Admin admin){
        String password = MD5Utils.md5(admin.getPassword());
        admin.setPassword(password);
        adminService.register(admin);
        return "redirect:/login.jsp";
    }

    /**
     * 注销登录
     * @return
     */
    @RequestMapping("destroy")
    public String destroy(HttpServletRequest request){
        request.getSession().invalidate();
        return "redirect:/login.jsp";
    }

}

三、员工增删改查功能模块的开发

  • 员工的增删改查功能

  • 员工展示页面

  • 添加员工示意图

  • 修改员工示意图

1、dao层(empDao.java)

public interface EmpDao {
    /**
     * 添加员工
     *
     * @param emp
     */
    public void insert(Emp emp);

    /**
     * 删除员工
     * @param id
     */
    public void deleteById(Integer id);

    /**
     * 展示员工
     * @return
     */
    public List<Emp> showEmp();

    /**
     * 修改员工
     * @param emp
     */
    public void updateEmp(Emp emp);

    /**
     * 数据回显
     * @param id
     * @return
     */
    public Emp selectEmpById(Integer id);
}

2、Service层

(1)empService接口层
public interface EmpService {
    /**
     * 添加员工
     *
     * @param emp
     */
    public void insert(Emp emp);

    /**
     * 删除员工
     * @param id
     */
    public void deleteById(Integer id);

    /**
     * 展示员工
     * @return
     */
    public List<Emp> showEmp();

    /**
     * 修改员工
     * @param emp
     */
    public void updateEmp(Emp emp);

    /**
     * 数据回显
     * @param id
     * @return
     */
    public Emp selectEmpById(Integer id);
}

(2)empServiceImpl实现类
@Service("empService")
/**
 * 控制事务
 */
@Transactional
public class EmpServiceImpl implements EmpService {
    /**
     * 将empDao注入进@Service组件中
     */
    @Autowired
    private EmpDao empDao;

    public void setEmpDao(EmpDao empDao) {
        this.empDao = empDao;
    }

    @Override
    public void insert(Emp emp) {
        empDao.insert(emp);
    }

    @Override
    public void deleteById(Integer id) {
    empDao.deleteById(id);
    }

    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public List<Emp> showEmp() {
        return empDao.showEmp();
    }

    @Override
    public void updateEmp(Emp emp) {
        empDao.updateEmp(emp);
    }

    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public Emp selectEmpById(Integer id) {
        return empDao.selectEmpById(id);
    }
}

3、功能测试(EmpTest)

public class EmpTest {
    /**
     * 添加员工
     */
    @Test
    public void insert(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmpService empService = (EmpService) context.getBean("empService");
        Emp emp = new Emp(null,"邓正武",2000d,22);
        empService.insert(emp);
    }


    /**
     * 删除员工
     */
    @Test
    public void deleteById(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmpService empService = (EmpService) context.getBean("empService");
        empService.deleteById(4);
    }


    /**
     * 展示员工
     * @return
     */
    @Test
    public void showEmp(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmpService empService = (EmpService) context.getBean("empService");
        List<Emp> emps = empService.showEmp();
        for (Emp emp : emps) {
            System.out.println(emp);
        }
    }

    /**
     * 修改员工
     */
    @Test
    public void updateEmp(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmpService empService = (EmpService) context.getBean("empService");
        Emp emp = new Emp(3,"邓正武",38000d,23);
        empService.updateEmp(emp);
    }
    /**
     * 数据回显
     * @return
     */
    @Test
    public void selectEmpById(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmpService empService = (EmpService) context.getBean("empService");
        Emp emp = empService.selectEmpById(1);
        System.out.println(emp);
    }
}

4、Controller层

@Controller("emoController")
@RequestMapping("emp")
public class EmpController {
    /**
     * 注入empService在EmpController中
     */
    @Autowired
    private EmpService empService;

    /**
     * 添加员工
     *
     * @param emp
     */
    @RequestMapping("insert")
    public String insert(Emp emp){

        empService.insert(emp);
        return "redirect:/emp/show";
    }


    /**
     * 删除员工
     * @param emp
     */
    @RequestMapping("delete")
    public String  deleteById(Emp emp){
        empService.deleteById(emp.getId());
  return "redirect:/emp/show";
    }

    /**
     * 展示员工
     * @return
     */
    @RequestMapping("show")
    public String showEmp(Model model){
        //调用业务方法
        List<Emp> emps = empService.showEmp();
        //作用域
        model.addAttribute("emps",emps);
        return "emplist";
    }

    /**
     * 修改员工
     * @param emp
     */
    @RequestMapping("update")
    public String  updateEmp(Emp emp){
        empService.updateEmp(emp);
        return "redirect:/emp/show";
    }


    /**
     * 数据回显
     * @param id
     * @return
     */
    @RequestMapping("select")
    public String selectEmpById(Integer id,Model model){
        Emp emp = empService.selectEmpById(id);
        model.addAttribute("emp",emp);
        return "updateEmp";
    }
}

完整代码下载地址SSM实战项目,人事管理系统源码+数据库+使用说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏网站的技术 SEO:提示和最佳实践

您是否希望提高游戏网站上的自然搜索可见性和用户参与度&#xff1f;如果是这样&#xff0c;实施技术SEO最佳实践是必不可少的。在这篇博文中&#xff0c;我们将提供使用技术 SEO 优化游戏网站的技巧和最佳实践&#xff0c;并讨论为什么它是搜索引擎优化 &#xff08;SEO&#…

熬夜会秃头——beta冲刺Day2

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day2团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、团队成员会议总结 1、成员…

【高效开发工具系列】驼峰下划线互转

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

centos7 yum安装redis

1.安装epel源 yum install epel-release -y 2.安装 参数-y是遇到yes/no时 自动yes yum install redis -y 3.查看redis安装的位置 whereis redis 4.打开配置文件 vim /etc/redis.config 5.修改密码 在打开的文件中输入 /requirepass 后按下确认键&#xff0c;(找下一个关…

常见的攻击防护

只做模拟机器使用&#xff0c;不使用真实机器 目录 一、 DHCP饿死和防护应对措施.................................. 1 1&#xff0c; 实验拓扑&#xff1a;...................................................... 2 2&#xff0c; 实验配置............................…

Web网页安全策略的研究及其实现方案

摘 要 越来越多的人使用电脑来接触互联网&#xff0c;事实上&#xff0c;使用Web技术的实现基于网络的不断完善和发展的交流网站&#xff0c;人们可以利用计算机网络技术&#xff0c;方便得到想要的任何信息。计算机网络的发展&#xff0c;也促进了相关产业的发展&#xff0c;…

C++11【下】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb; 新的类功能类成员变量初始…

【pytorch】从yolo的make_grid理解torch.meshgrid、torch.stack

文章目录 简述1、torch.meshgrid 创建行列坐标2、torch.stack 结合行列坐标3、通过view函数扩展维度 简述 yolo检测 make_grid创建网格代码如下&#xff0c;那么什么是torch.meshgrid? def _make_grid(nx20, ny20):yv, xv torch.meshgrid([torch.arange(ny), torch.arange(…

三 STM32F4使用Sys_Tick 实现微秒定时器和延时

更多细节参考这篇 1. 什么是时钟以及作用 1.1 什么是时钟 时钟是由电路产生的周期性的脉冲信号&#xff0c;相当于单片机的心脏 1.2 时钟对于STM32的作用 指令同步&#xff1a;cpu和内核外设使用时钟信号来进行指令同步数据传输控制&#xff1a; 时钟信号控制数据在内部总…

CSS新手入门笔记整理:CSS图片样式

图片大小 语法 width:像素值; height:像素值; 图片边框&#xff1a;border 语法 边框&#xff1a;宽度值 样式值 颜色值&#xff1b; border:1px solid red; 图片对齐 水平对齐&#xff1a;text-align 语法 text-align:取值; 属性值 说明 left 左对齐(默认值) cent…

【Java Web学习笔记】 1 - HTML入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息&#xff0c;可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如&#xff0c;标题字体、…

go学习之goroutine和channel

文章目录 一、goroutine(协程)1.goroutine入门2.goroutine基本介绍-1.进程和线程说明-2.程序、进程和线程的关系示意图-3.Go协程和Go主线程 3.案例说明4.小结5.MPG模式基本介绍6.设置Golang运行的CPU数7.协程并发&#xff08;并行&#xff09;资源竞争的问题8.全局互斥锁解决资…

【渗透】记录阿里云CentOS一次ddos攻击

文章目录 发现防御 发现 防御 流量清洗 使用高防

acwing算法基础之动态规划--数位统计DP、状态压缩DP、树形DP和记忆化搜索

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1&#xff1a;求a~b中数字0、数字1、…、数字9出现的次数。 思路&#xff1a;先计算1~a中每位数字出现的次数&#xff0c;然后计算1~b-1中每位数字出现的次数&#xff0c;两个相减即…

YOLOv8优化策略:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.SENetV2 论文:https://arxiv.org/…

java:springboot3集成swagger(springdoc-openapi-starter-webmvc-ui)

背景 网上集成 swagger 很多都是 Springfox 那个版本的&#xff0c;但是那个版本已经不更新了&#xff0c;springboot3 集成会报错 Typejavax.servlet.http.HttpServletRequest not present&#xff0c;我尝试了很多才知道现在用 Springdoc 了&#xff0c;今天我们来入门一下 …

2023-12-02 LeetCode每日一题(拼车)

2023-12-02每日一题 一、题目编号 1094. 拼车二、题目链接 点击跳转到题目位置 三、题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整数 capacity 和一个数组 trips , trip[i] …

国际语音群呼系统

随着海外电话营销的发展&#xff0c;越来越多的出海企业通过国际语音群呼系统打开出海营销之路。企业出海营销运营&#xff0c;选择一个安全、高效、便捷的国际语音群呼系统非常重要。 一、什么是国际语音群呼系统&#xff1f; 国际语音群呼是指通过语音的方式批量向海外用户传…

一进三出宿舍限电模块的改造升级

一进三出宿舍限电模块改造升级石家庄光大远通电气有限公司智能模块功能特点&#xff1a; 电能控制功能&#xff1a;可实施剩余电量管理&#xff0c;电量用完时将自动断电&#xff1b; 剩余电量可视报警提示功能&#xff1a;剩余电量可视&#xff0c;并当电量剩余5度时&#xff…

cpu版本的torch可以用清华镜像源安装

一、来到pytroch官网找到如下代码 官方提供的默认的安装cpu版本的torch的命令 pip3 install torch torchvision torchaudio二、使用清华镜像安装 pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple