【SSH测试整合Demo】企业人事管理系统(一)

简介: 前面我们已经学习了怎么整合SSH框架了。是时候拿一个小项目来练练手了….我们现在要设计一个企业人事管理系统…

前言

前面我们已经学习了怎么整合SSH框架了。是时候拿一个小项目来练练手了….我们现在要设计一个企业人事管理系统…

需求:

  • **要求对员工信息进行维护; **
  • 后台系统先登陆,才能操作员工: 添加/修改/删除
  • 没有登陆,只能查看列表,不能操作!

功能分类:

  • 【管理员模块】
  • 注册/登陆
  • 【员工模块】
  • 1) 添加一个员工, 指定添加的部门
  • 2) 对指定的员工信息修改
  • 3) 删除选择员工
  • 4) 列表展示

数据库设计

  • 管理员表: t_admin
  • 员工表:   t_user
  • 部门:     t_dept

搭建配置环境

关于搭建配置环境可参考上一篇博文:http://blog.csdn.net/hon_3y/article/details/72190638

编写JavaBean 和映射文件

JavaBean编写

Admin.java

public class Admin {
    private int id;
    private String username;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

User.java

public class User {
    private int id;
    private String username;
    private Dept dept;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
}

Dept.java

public class Dept {
    private int id;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

映射文件

Dept.hbm.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="zhongfucheng.entity">
    <class name="Dept" table="t_dept">
        <id name="id" >
            <generator class="native"></generator>
        </id>
        <property name="name" column="name"></property>
    </class>
</hibernate-mapping>

User.hbm.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="zhongfucheng.entity">
    <class name="User" table="t_user">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="username" column="userName"></property>
        <many-to-one name="dept" class="Dept" column="dept_id"/>
    </class>
</hibernate-mapping>

Admin.hbm.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="zhongfucheng.entity">
    <class name="Admin" table="t_admin">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="username" column="userName"></property>
        <property name="password" column="password"></property>
    </class>
</hibernate-mapping>

编写Dao

编写BaseDao

为什么要写baseDao??可以参考我这篇博文:http://blog.csdn.net/hon_3y/article/details/70243918

package zhongfucheng.dao;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.lang.reflect.ParameterizedType;
import java.util.List;
/**
 * Created by ozc on 2017/5/16.
 */
public abstract class BaseDao<T> {
    // 容器注入sessionFactory
    @Autowired
    private SessionFactory sessionFactory;
    //子类的类型
    private Class<T> clazz;
    //子类的名称
    private String clazzName;
    public BaseDao(){
        clazz = (Class<T>) this.getClass();  //拿到的是子类
        ParameterizedType pt = (ParameterizedType) clazz.getGenericSuperclass();
        //拿到子类的真实类型
        clazz = (Class) pt.getActualTypeArguments()[0];
        //拿到子类的名称【HQL都是通过类名来查询的】
        clazzName = clazz.getSimpleName();
    }
    public void add(T t){
        sessionFactory.getCurrentSession().save(t);
    }
    public T find(String id){
        return (T) sessionFactory.getCurrentSession().get(clazz, id);
    }
    public void update(T t){
        sessionFactory.getCurrentSession().update(t);
    }
    public void delete(String id){
        T t = (T) sessionFactory.getCurrentSession().get(clazz, id);
        sessionFactory.getCurrentSession().delete(t);
    }
    public List<T> getAll() {
        return sessionFactory.getCurrentSession().createQuery("from" + clazzName).list();
    }
}

编写UserDao

此时的UserDao已经有了baseDao的所有功能

/**
 * 1.添加员工--->add()
 * 2.修改员工--->find()
 * 3.删除员工--->delete()
 * 4.得到所有员工-->getAll()
 * 5.根据id得到员工-->find()
 * */
@Repository
public class UserDao extends BaseDao<User>{
}

编写AdminDao

/**
 *
 * 1.保存管理员【注册】--->add()
 * 2.查找管理员【登陆】--->login()
 *
 *
 * */
@Repository
public class AdminDao extends BaseDao<Admin> {
    @Autowired
    private SessionFactory sessionFactory;
    public Admin login(Admin admin) {
        return (Admin) sessionFactory.
                getCurrentSession().
                createQuery("FROM Admin WHERE username=? AND password=?")
                .setParameter(0, admin.getUsername())
                .setParameter(1, admin.getPassword())
                .uniqueResult();
    }
}

编写DeptDao

import org.springframework.stereotype.Repository;
import zhongfucheng.entity.Dept;
/**
 * 1.查找所有的部门【在添加员工、修改员工时需要用】-->getAll()
 * 2.通过id查找所在的部门信息--->find()
 *
 * */
@Repository
public class DeptDao extends BaseDao<Dept> {
}
目录
打赏
0
0
0
0
1282
分享
相关文章
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
82 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
171 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
257 0
企业为什么要做渗透测试
随着网络经济的蓬勃发展,越来越多的企业将交易平台迁移至互联网,随之而来的安全挑战也日益凸显。尽管企业在安全方面投入巨大,但往往遇到“安全性玻璃天花板”,即安全水平达到一定瓶颈后,再增加投入也无法显著提升安全效能。渗透测试作为一种有效的安全评估手段,正逐渐受到重视。它不仅能满足政策合规要求,还能帮助企业发现并修复潜在的安全漏洞,降低业务风险。渗透测试通过模拟真实攻击,全面评估系统的安全状况,为企业提供更精准的安全防护方案。
106 0
企业为什么要做渗透测试
【10月更文挑战第29天】随着网络经济的兴起,互联网交易系统安全成为企业关注的重点。然而,企业在安全上的投入往往达到瓶颈,形成“安全性玻璃天花板”。渗透测试作为一种有效的安全评估方法,能帮助企业突破这一瓶颈。它不仅满足政策合规性要求,还能提高客户操作安全性,减少业务风险。渗透测试通过模拟黑客攻击,发现并修复系统潜在的安全隐患,使企业从被动防御转为主动应对。
60 0
基于SpringBoot+Vue大学生体质测试管理系统【源码+论文+演示视频+包运行成功】(1)
基于SpringBoot+Vue大学生体质测试管理系统【源码+论文+演示视频+包运行成功】
239 0
基于ssm+vue.js的在线测试管理系统附带文章和源代码设计说明文档ppt
基于ssm+vue.js的在线测试管理系统附带文章和源代码设计说明文档ppt
106 0
基于SpringBoot+Vue+uniapp的在线测试管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线测试管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
410 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问