JDBC学习(二)

本文详细介绍了DAO设计模式、自定义连接池的概念,接着讲解了DBCP、C3P0和Druid三种常用的Java数据库连接池的使用步骤及特点。此外,还涵盖了DBUtils工具类的使用,包括其简介、主要类以及如何封装工具类。
摘要由CSDN通过智能技术生成

1.DAO模式和自定义连接池

1.1 DAO设计模式

DAO(Database Access Object 数据库访问对象)

为了降低耦合性,提出了DAO封装数据库操作的设计模式。

它可以实现业务逻辑与数据库访问相分离。相对来说,数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口,隔离了不同的数据库实现。
DAO模式的组成部分

​ 1 DAO接口(主要有添加 修改 查询 删除方法)

​ 2 DAO实现类

​ 3 实体类 (domain(领域)、beans、entity、pojo、model)

​ PO (VO)(Persistent Object, Value Object)

​ VO (View Object)

​ DTO (Data Transfer Object)

​ --作用:用在数据访问代码和业务逻辑代码之间通过实体类来传输数据

​ --实体类特征:

​ ◦属性一般使用private修饰

​ ◦提供public修饰的getter/setter方法

​ ◦实体类提供无参构造方法,根据业务提供有参构造

​ ◦实现java.io.Serializable接口,支持序列化机制

​ 4 数据库连接和关闭工具类
设计的包名 :

domain 存放实体类

utils 存放工具类

dao 存放接口

dao.impl 存放实现类
代码示例
Employee类

/**
 * 员工类
 * 实体类
 * @author wgy
 *
 */
public class Employee implements Serializable {
   
	/**
	 * 
	 */
	private static final long serialVersionUID = 373910607014836778L;
	private int empno;
	private String ename;
	private String job;
	private int mgr;
	private Date hiredate;
	private double sal;
	private double comm;
	private int deptno;
	
	public Employee() {
   
		// TODO Auto-generated constructor stub
	}

	public Employee(int empno, String ename, String job, int mgr, Date hiredate, double sal, double comm, int deptno) {
   
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}

	public int getEmpno() {
   
		return empno;
	}

	public void setEmpno(int empno) {
   
		this.empno = empno;
	}

	public String getEname() {
   
		return ename;
	}

	public void setEname(String ename) {
   
		this.ename = ename;
	}

	public String getJob() {
   
		return job;
	}

	public void setJob(String job) {
   
		this.job = job;
	}

	public int getMgr() {
   
		return mgr;
	}

	public void setMgr(int mgr) {
   
		this.mgr = mgr;
	}

	public Date getHiredate() {
   
		return hiredate;
	}

	public void setHiredate(Date hiredate) {
   
		this.hiredate = hiredate;
	}

	public double getSal() {
   
		return sal;
	}

	public void setSal(double sal) {
   
		this.sal = sal;
	}

	public double getComm() {
   
		return comm;
	}

	public void setComm(double comm) {
   
		this.comm = comm;
	}

	public int getDeptno() {
   
		return deptno;
	}

	public void setDeptno(int deptno) {
   
		this.deptno = deptno;
	}

	@Override
	public String toString() {
   
		return "Employee [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate="
				+ hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]";
	}
	

接口

public interface EmployeeDao {
   
	
	 //1查询
	 List<Employee> findAll();
	 //2更新
	 void update(Employee e);
	 //3删除
	 void delete(int empno);
	 //4添加
	 void add(Employee e);	
}

实现类

public class EmployeeDaoImpl implements EmployeeDao{
   

	@Override
	public List<Employee> findAll() {
   
		
		ArrayList<Employee> employees=new ArrayList<Employee>();
		//1获取连接
		Connection conn=null;
		PreparedStatement pstat=null;
		ResultSet rs=null;
		try {
   
			conn=DbUtils.getConnection();
			pstat=conn.prepareStatement("select * from emp;");
			rs=pstat.executeQuery();
			while(rs.next()){
   
				int empno=rs.getInt("empno");
				String ename=rs.getString("ename");
				String job
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值