SSM实战项目:人事管理系统(蓝色版)【附源代码】

?程序员小王的博客:程序员小王的博客
? 欢迎点赞 ? 收藏 ⭐留言 ?
? 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
?java自学的学习路线:java自学的学习路线

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

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

源代码在githee仓库:SSM实战项目:人事管理系统(蓝色版)

1、整个项目实现功能

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

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";
    }
}

源代码在githee仓库:SSM实战项目:人事管理系统(蓝色版)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>