JDBC DAO模式笔记

DAO全称为 Data Access Object ---数据访问对象(把对数据库的操作封装到一个部分)


组成:

1.一个VO类,与数据表表单的变量一致.并有变量的 setter,getter方法

2.一个数据库连接类,装有连接数据库和关闭数据库的方法

3.DAO接口,写有操作数据库的方法

4.实现DAO接口的实现类


例如:

一个数据表中的值域为  ID,NAME,AGE 

VO类:(Customer类)

public class Customer {
	private int id;
	private String name;
	private int age;
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString()
	{
		return "id:"+id+" name:"+name+" age:"+age;
	}
	
}


连接和关闭数据库的类(DBUtil类)

public class DBUtil {
	private static String driver;
	private static String url;
	private static String username;
	private static String password;
	
	static{
		Properties prop = new Properties();		//第一步:新建一个配置文件对象
		try {
			Reader in = new FileReader("src\\config.properties");	//第二步:指定输入流为文件输入流
			prop.load(in);
		} catch (Exception e) {
			e.printStackTrace();
		}
		driver = prop.getProperty("driver");	// getProperty(“driver”)用于获取配置文件 driver= 后的值
		url = prop.getProperty("url");
		username = prop.getProperty("username");
		password = prop.getProperty("password");
	}//static
	
	//打开(连接)数据库
	public static Connection open()
	{		
			try {
				Class.forName(driver);
				return DriverManager.getConnection(url,username,password);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
	}
	
	//关闭数据库
	public static void close(Connection conn)
	{
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
}


DAO接口:

import java.util.List;

public interface CustomerDAO {
	public void add(Customer c);
	public void update(Customer c);
	public void delete(int id);
	public Customer getCustomerById(int id);
	public List<Customer> query();
}


DAO实现类(DaoImp)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class CustomerDaoImp implements CustomerDAO {

	//增
	public void add(Customer c) {
		Connection conn = DBUtil.open();
		String sql = "insert into person(name,age)values(?,?)";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1,c.getName());
			pstmt.setInt(2, c.getAge());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally
		{
			DBUtil.close(conn);
		}
	}
	//修改
	public void update(Customer c) {
		Connection conn = DBUtil.open();
		String sql = "update person set name=?,age=? where id =?";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, c.getName());
			pstmt.setInt(2, c.getAge());
			pstmt.setInt(3, c.getId());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(conn);
		}
	}
	//删除
	public void delete(int id) {
		Connection conn = DBUtil.open();
		String sql = "delete from person where id = ?";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, id);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(conn);
		}
	}
	//以ID查找
	public Customer getCustomerById(int id) {
		Connection conn = DBUtil.open();
		String sql = "select id,name,age from person where id = ?";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, id);
			ResultSet rs = pstmt.executeQuery();
			if(rs.next())
			{
				Customer c = new Customer();
				c.setId(rs.getInt(1));
				c.setName(rs.getString(2));
				c.setAge(rs.getInt(3));
				return c;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(conn);
		}
		return null;
	}
	//遍历整个数据表
	public List<Customer> query() {
		Connection conn = DBUtil.open();
		String sql = "select id,name,age from person";
		List<Customer> list = new ArrayList<Customer>();
		try {
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			while(rs.next())
			{
				int id = rs.getInt(1);
				String name = rs.getString(2);
				int age = rs.getInt(3);
				Customer c = new Customer();
				c.setId(id);
				c.setName(name);
				c.setAge(age);
				list.add(c);
			}
			return list;
		} catch (SQLException e) {
			e.printStackTrace();
		}finally
		{
			DBUtil.close(conn);
		}
		return null;
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值