【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> {
}
目录
相关文章
|
22天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
54 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
41 1
|
3月前
|
监控 测试技术
如何进行系统压力测试?
【10月更文挑战第11天】如何进行系统压力测试?
185 34
|
3月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
161 32
|
2月前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
102 3
|
3月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
56 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
2月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
安全 测试技术 网络安全
企业为什么要做渗透测试
随着网络经济的蓬勃发展,越来越多的企业将交易平台迁移至互联网,随之而来的安全挑战也日益凸显。尽管企业在安全方面投入巨大,但往往遇到“安全性玻璃天花板”,即安全水平达到一定瓶颈后,再增加投入也无法显著提升安全效能。渗透测试作为一种有效的安全评估手段,正逐渐受到重视。它不仅能满足政策合规要求,还能帮助企业发现并修复潜在的安全漏洞,降低业务风险。渗透测试通过模拟真实攻击,全面评估系统的安全状况,为企业提供更精准的安全防护方案。
42 0
|
2月前
|
安全 测试技术 网络安全
企业为什么要做渗透测试
【10月更文挑战第29天】随着网络经济的兴起,互联网交易系统安全成为企业关注的重点。然而,企业在安全上的投入往往达到瓶颈,形成“安全性玻璃天花板”。渗透测试作为一种有效的安全评估方法,能帮助企业突破这一瓶颈。它不仅满足政策合规性要求,还能提高客户操作安全性,减少业务风险。渗透测试通过模拟黑客攻击,发现并修复系统潜在的安全隐患,使企业从被动防御转为主动应对。
24 0
|
4月前
|
Linux
kickstart自动安装系统 --DHCP 配置及测试
PXE+Kickstart自动安装系统需配置DHCP服务器分配IP。dhcpd.conf示例:设置更新样式、忽略客户端更新、指定下一服务器及启动文件。定义子网、网关、掩码、动态地址池并预留特定MAC地址。重启xinetd、NFS、DHCP服务,确保新服务器与Kickstart服务器在同一网络,避免误装其他机器。注意隔离测试网络以防干扰生产环境。
87 18