DAO模式及单例模式
我们在写jdbc连接数据库时,我们一直重复写一些代码,不具有复用性,我们更改数据库类型,代码就要全部改动,耦合性太强。
我们需要把逻辑代码和数据访问代码隔离开,也就是封装JDBC。
一,DAO模式
什么是DAO
- Data Access Object(数据存取对象)
- 位于业务逻辑和持久化数据之间
- 实现对持久化数据的访问
DAO模式的组成
DAO模式的组成部分:
- DAO接口
- DAO实现类
- 实体类
- 数据库连接和关闭工具类
优势
- 隔离了数据访问代码和业务逻辑代码
- 隔离了不同数据库实现
dao模式就是对应接口,实现类(利用封装好的JDBC工具类),实体类(pojo)
下面是我的dao模式的文件结构
JDBC工具类
每个人封装的工具类都可能不一样,所以仅供参考(这个工具类需要dao实现类继承,也可以把工具类改成静态方法)。
package com.wff.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
* 数据库连接工具类
* @author zy
*
*/
public class BaseDao {
protected ResultSet rs = null;
protected PreparedStatement ps = null;
protected Connection conn = null;
//获得数据库连接
public boolean getConnection() {
try {
ConfigManger config=ConfigManger.getInstance();
String driver=config.getProperty("driver");
String url=config.getProperty("url");
String uname=config.getProperty("username");
String upwd=config.getProperty("userpwd");
Class.forName(driver);
//通过DriverManager.getConnection获得Connection对象
conn = DriverManager.
getConnection(url, uname, upwd);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 公共修改 添加 删除
* @param sql
* @param objs
* @return
*/
public int executUpdate(String sql,Object[] objs) {
int updateRows = 0;
try {
ps = conn.prepareStatement(sql);
if