【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> {
}
目录
相关文章
|
12天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
45 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
1月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
43 2
|
2月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
97 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
4月前
|
监控 测试技术
如何进行系统压力测试?
【10月更文挑战第11天】如何进行系统压力测试?
232 34
|
3月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
70 1
|
4月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
237 32
|
3月前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
208 3
|
4月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
83 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
3月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
3月前
|
安全 测试技术 网络安全
企业为什么要做渗透测试
随着网络经济的蓬勃发展,越来越多的企业将交易平台迁移至互联网,随之而来的安全挑战也日益凸显。尽管企业在安全方面投入巨大,但往往遇到“安全性玻璃天花板”,即安全水平达到一定瓶颈后,再增加投入也无法显著提升安全效能。渗透测试作为一种有效的安全评估手段,正逐渐受到重视。它不仅能满足政策合规要求,还能帮助企业发现并修复潜在的安全漏洞,降低业务风险。渗透测试通过模拟真实攻击,全面评估系统的安全状况,为企业提供更精准的安全防护方案。
62 0

热门文章

最新文章

  • 1
    AWS 云安全深度剖析:如何有效监测 SSH 暴力攻击
  • 2
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
  • 3
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • 4
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 5
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 6
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 7
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 8
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
  • 9
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 10
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架