java项目dao层的父类(抽取类)

本文介绍了一个基于Java的DAO层设计,通过抽象基类实现了数据库操作的通用方法,包括连接获取、增删改查及资源关闭。具体展示了EmpDao类对emp表的CRUD操作,包括添加、删除、更新和查询员工信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.clc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Dao层的父类,设置此类为抽象类,自身不能实例化,供dao层的其他类继承
 * @author Administrator
 *
 */
public abstract class BaseDao {
	
	protected Connection conn = null;
	protected PreparedStatement pstmt = null;
	protected ResultSet rs = null;
	String driver = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/java_mysql";
	String user = "root";
	String password = "root";
	
	/**
	 * 	获取连接对象
	 * @throws Exception
	 */
	public void getConn() throws Exception {
		Class.forName(driver);
		conn = DriverManager.getConnection(url,user,password);
	}
	
	/**
	 * 	增删改的通用方法
	 * @param sql
	 * @param params 可变参数,是数组的一种特殊用法,在参数sql后面可以接上一个或多个对应类型的参数
	 */
	public void edit(String sql,Object... params) {
		try {
			getConn();
			pstmt = conn.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				pstmt.setObject(i+1, params[i]);
			}
			int row = pstmt.executeUpdate();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeAll();
		}
	}
	
	/**
	 * 关闭所有资源
	 */
	public void closeAll() {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

}
package com.clc.dao;

import java.util.ArrayList;
import java.util.List;

import com.zhiyou100.clc.bean.Emp;

/**
 * 表emp的操作类
 * 
 * @author Administrator
 *
 */
public class EmpDao extends BaseDao {

	/**
	 * 添加员工
	 * 
	 * @param ename 员工姓名
	 * @param job   工作
	 * @param sal   工资
	 */
	public void addEmp(String ename, String job, double sal) {
		String sql = "insert emp values(null,?,?,?,now())";
		edit(sql, ename, job, sal);
	}

	/**
	 * 根据员工号删除员工信息
	 * 
	 * @param empId
	 */
	public void deleteById(int empId) {
		String sql = "delete from emp where empId = ?";
		edit(sql, empId);
	}

	/**
	 * 根据员工号修改员工信息
	 * 
	 * @param empId 员工号
	 * @param ename 姓名
	 * @param job   工作
	 * @param sal   工资
	 */
	public void updateById(int empId, String ename, String job, double sal) {
		String sql = "update emp set ename = ?,job = ?,sal = ? where empId = ?";
		edit(sql, ename, job, sal, empId);
	}

	/**
	 * 根据员工号查询员工信息
	 * 
	 * @param empId
	 */
	public Emp selectById(int empId) {
		Emp emp = null;
		try {
			getConn();
			String sql = "select empId,ename,job,sal,hiredate from emp where empId = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, empId);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				emp = new Emp(rs.getInt("empId"), rs.getString("ename"), rs.getString("job"), rs.getDouble("sal"),
						rs.getDate("hiredate"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeAll();
		}
		return emp;
	}

	/**
	 * 查询所有员工信息
	 */
	public List<Emp> selectAll() {
		List<Emp> empList = new ArrayList<Emp>();
		try {
			getConn();
			String sql = "select empId,ename,job,sal,hiredate from emp";
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Emp emp = new Emp(rs.getInt("empId"), rs.getString("ename"), rs.getString("job"), rs.getDouble("sal"),
						rs.getDate("hiredate"));
				empList.add(emp);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeAll();
		}
		return empList;
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值