通过DAO设计模式实现雇员的添加、查询操作

2023-10-13 13:50

本文主要是介绍通过DAO设计模式实现雇员的添加、查询操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过DAO设计模式实现雇员的添加、查询操作

设计实现 DAO 设计模式中的雇员的添加、查询操作,并通过 JSP 进行界面展示

数据库页面
数据库页面

项目结构
项目结构

Emp.java

package test05;import java.util.Date;public class Emp {private int empno;private String ename;private String job;private Date hiredate;private float sal;public int getEmpno() {return empno;}public String getEname() {return ename;}public String getJob() {return job;}public Date getHiredate() {return hiredate;}public float getSal() {return sal;}public void setEmpno(int empno) {this.empno = empno;}public void setEname(String ename) {this.ename = ename;}public void setJob(String job) {this.job = job;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public void setSal(float sal) {this.sal = sal;}
}

DataBaseConnection.java

package test05;import java.sql.Connection;public interface DataBaseConnection {public Connection getConnection();public void close() throws Exception;
}

MysqlDatabaseConnection.java

package test05;import java.sql.*;public class MysqlDatabaseConnection implements DataBaseConnection{private static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";private static final String DBURL = "jdbc:mysql://localhost:3306/mldn?useUnicode=true&characterEncoding=UTF-8";private static final String DBUSER = "root";private static final String DBPASSWORD = "123456";private Connection conn = null;public MysqlDatabaseConnection() throws Exception {try{Class.forName(DBDRIVER);this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);}catch (Exception e){throw e;}}@Overridepublic Connection getConnection(){return this.conn;}@Overridepublic void close() throws Exception{if(this.conn != null){try{this.conn.close();}catch (Exception e){throw e;}}}
}

DatabaseConnectionFactory.java

package test05;public class DatabaseConnectionFactory {public static DataBaseConnection getDataBaseConnection() throws Exception{return new MysqlDatabaseConnection();}
}

IEmpDAO.java

package test05;import test05.Emp;
import java.util.List;public interface IEmpDAO {public boolean doCreate(Emp emp) throws Exception;public List<Emp> findAll(String keyWorld) throws Exception;public Emp findByid(int empno) throws Exception;
}

EmpDAOImpl.java

package test05;import test05.Emp;
import test05.IEmpDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class EmpDAOImpl implements IEmpDAO {private Connection conn = null;private PreparedStatement pstmt = null;public EmpDAOImpl(Connection conn){this.conn = conn;}@Overridepublic boolean doCreate(Emp emp) throws Exception {boolean flag = false;String sql = "INSERT INTO emp(empno, ename, job, hiredate, sal) VALUES (?, ?, ?, ?, ?);";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setInt(1, emp.getEmpno());this.pstmt.setString(2, emp.getEname());this.pstmt.setString(3, emp.getJob());this.pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));this.pstmt.setFloat(5, emp.getSal());if(this.pstmt.executeUpdate() > 0){flag = true;}this.pstmt.close();return flag;}@Overridepublic List<Emp> findAll(String keyWorld) throws Exception {List<Emp> all = new ArrayList<Emp>();String sql = "SELECT * FROM emp WHERE ename like ? OR job like ?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setString(1, "%" + keyWorld + "%");this.pstmt.setString(2, "%" + keyWorld + "%");ResultSet rs = this.pstmt.executeQuery();Emp emp = null;while(rs.next()){emp = new Emp();emp.setEmpno(rs.getInt(1));emp.setEname(rs.getString(2));emp.setJob(rs.getString(3));emp.setHiredate(rs.getDate(4));emp.setSal(rs.getFloat(5));all.add(emp);}this.pstmt.close();return all;}@Overridepublic Emp findByid(int empno) throws Exception {Emp emp = null;String sql = "SELECT empno, ename, job, hiredate, sal FROM emp WHERE empno = ?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setInt(1, empno);ResultSet rs = this.pstmt.executeQuery();if(rs.next()){emp = new Emp();emp.setEmpno(rs.getInt(1));emp.setEname(rs.getString(2));emp.setJob(rs.getString(3));emp.setHiredate(rs.getDate(4));emp.setSal(rs.getFloat(5));}this.pstmt.close();return emp;}
}

EmpDAOProxy.java

package test05;import java.util.List;import test05.Emp;public class EmpDAOProxy implements IEmpDAO{private DataBaseConnection dbc =null;private IEmpDAO dao=null;public EmpDAOProxy() throws Exception{this.dbc=new MysqlDatabaseConnection();this.dao=new EmpDAOImpl(this.dbc.getConnection());}@Overridepublic boolean doCreate(Emp emp) throws Exception {// TODO Auto-generated method stubboolean flag=false;try {if(this.dao.findByid(emp.getEmpno())==null) {flag=this.dao.doCreate(emp);}}catch (Exception e) {// TODO: handle exceptionthrow e;}finally {this.dbc.close();}return flag;}@Overridepublic List<Emp> findAll(String keyWorld) throws Exception {// TODO Auto-generated method stubList<Emp> all=null;try {all=this.dao.findAll(keyWorld);}catch (Exception e) {// TODO: handle exceptionthrow e;}finally {this.dbc.close();}return all;}@Overridepublic Emp findByid(int empno) throws Exception {// TODO Auto-generated method stubEmp emp=null;try {emp=this.dao.findByid(empno);}catch (Exception e) {// TODO: handle exceptionthrow e;}finally {this.dbc.close();}return emp;}}

DAOFactory.java

package test05;import test05.IEmpDAO;
import test05.EmpDAOProxy;public class DAOFactory {public static IEmpDAO getIEmpDAOInstance()  throws Exception{// TODO Auto-generated method stubreturn new EmpDAOProxy();}
}

(插入测试类)
TestDAOInsert.java

package test05;import test05.DAOFactory;
import test05.Emp;public class TestDAOInsert {public static void main(String[] args) throws Exception{Emp emp=null;for(int i=0;i<5;i++) {emp=new Emp();emp.setEmpno(i+100);emp.setEname("张三-"+i);emp.setJob("音效师-"+i);emp.setHiredate(new java.util.Date());emp.setSal(10000+i);DAOFactory.getIEmpDAOInstance().doCreate(emp);}}
}

插入测试

(检索测试类)
TestDAOSelect.java

package test05;import java.util.Iterator;
import java.util.List;
import test05.DAOFactory;
import test05.Emp;public class TestDAOSelect {public static void main(String[] args) throws Exception{// TODO Auto-generated method stubList<Emp> all=DAOFactory.getIEmpDAOInstance().findAll("");Iterator<Emp> iter=all.iterator();while(iter.hasNext()) {Emp emp=iter.next();System.out.println(emp.getEmpno()+"、"+emp.getEname()+"-->"+emp.getEname());}}}

检索测试

(首页)
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<center>
<h1>首页</h1>
<br>
<a href="insert.jsp">添加雇员</a>
<br>
<a href="select.jsp">查询雇员</a>
</center>
</body>
</html>

首页

(添加雇员)
insert.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加雇员</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<form action="insert_do.jsp" method="post">
雇员编号:<input type="text" name="empno"><br>
雇员姓名:<input type="text" name="ename"><br>
雇员职位:<input type="text" name="job"><br>
雇佣日期:<input type="text" name="hiredate"><br>
基本工资:<input type="text" name="sal"><br>
<input type="submit" value="添加">
<input type="reset" value="重置">
</form>
</body>
</html>

添加雇员

(添加雇员操作)
insert_do.jsp

<%@page import="java.text.*"%>
<%@page import="test05.DAOFactory"%>
<%@page import="test05.DatabaseConnectionFactory" %>
<%@page import="test05.Emp" %>
<%@page import="test05.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加雇员</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
Emp emp=new Emp();
emp.setEmpno(Integer.parseInt(request.getParameter("empno")));
emp.setEname(request.getParameter("ename"));
emp.setJob(request.getParameter("job"));
emp.setHiredate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("hiredate")));
emp.setSal(Float.parseFloat(request.getParameter("sal")));
try{if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){%><h3>雇员信息添加成功!</h3><%}else{%><h3>雇员信息添加失败!</h3><%}
}catch(Exception e){e.printStackTrace();
}%>
</body>
</html>

(雇员查询)
select.jsp

<%@page import="test05.DAOFactory"%>
<%@page import="test05.DatabaseConnectionFactory" %>
<%@page import="test05.EmpDAOProxy" %>
<%@page import="test05.DataBaseConnection" %>
<%@page import="test05.EmpDAOImpl" %>
<%@page import="test05.IEmpDAO" %>
<%@page import="test05.MysqlDatabaseConnection" %>
<%@page import="test05.Emp" %>
<%@page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>雇员查询</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
try{String keyWord=request.getParameter("kw");if(keyWord==null){keyWord="";}List<Emp> all=DAOFactory.getIEmpDAOInstance().findAll(keyWord);Iterator<Emp> iter=all.iterator();%><center><form action="select.jsp" method="post">请输入查询关键字:<input type="text" name="kw"><input type="submit" value="查询"></form><table border="1"><tr><td>雇员编号</td><td>雇员姓名</td><td>雇员职位</td><td>雇佣日期</td><td>基本工资</td></tr><%while(iter.hasNext()){Emp emp=iter.next();%><tr><td><%=emp.getEmpno() %></td><td><%=emp.getEname() %></td><td><%=emp.getJob() %></td><td><%=emp.getHiredate() %></td><td><%=emp.getSal() %></td></tr><%}%></table></center><%
}catch(Exception e){e.printStackTrace();
}%>
</body>
</html>

雇员查询操作前页面
雇员查询操作后页面

这篇关于通过DAO设计模式实现雇员的添加、查询操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203653

相关文章

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用