DAO模式

DAO(Data Access Object) 数据访问对象 是一个面向对象 的数据库接口,降低代码间的耦合性,提高代码的可扩展性和维护性。
一个典型的DAO模式主要由一下几个部分组成。

1)DAO接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现。
2)DAO实现类:针对不同数据库给出DAO接口定义方法的具体实现。
3)实体类:用于存放于传输对象数据。
4)数据库连接和关闭工具类:避免了数据库连接和关闭代码的重复使用,方便修改。

DAO接口类实现代码:

public interface petDao {
	int save(pet pet);
	int del(pet pet);
	int update(pet pet);
}

DAO实现类类似代码:

public class petDaoImpl extends BaseDao implements petDao{

	@Override
	public int save(pet pet) {
		// TODO Auto-generated method stub
		String sql="insert into test(id,name) value (?,?)";
		
	
		Object [] param={1,pet.getName()};
		int result=this.executeUpdate(sql,param);
		return result;
		
	}

	@Override
	public int del(pet pet) {
		String sql="delete from test where id=?";
		
		Object[] param={pet.getId()};
		int result=this.executeUpdate(sql, param);
		
		return result;
	}

	@Override
	public int update(pet pet) {
		String sql="update test set id=? where name=?";
		Object[] param={pet.getId(),pet.getName()};
		int result=this.executeUpdate(sql, param);
		return result;
	}

实体类类似代码:

public class pet {
int id;
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;
}
String name;
}
数据库连接和关闭类似代码:
public class BaseDao {

	String className="com.mysql.jdbc.Driver";
	String user="root";
	String db_url="jdbc:mysql://localhost:3306/jdbcdemo";
	String pwd="1234";
	Connection conn=null;
	public Connection getconn() {
		if (conn==null) {
			try {
				Class.forName(className);
				conn = DriverManager.getConnection(db_url, user, pwd);
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		
		}
		return conn;
	}
	public void closeAll(Connection conn,Statement stmt,ResultSet rs) {
		//若结果集对象不为空,则关闭
		if (rs!=null) {
			try {
				rs.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
		//若statement对象不为空,则关闭
		if (stmt!=null) {
			try {
				stmt.close();
			} catch (Exception e) {
				// TODO: handle exception
			e.printStackTrace();
			}
		}
		if (conn!=null) {
			try {
				conn.close();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}
	public int executeUpdate(String sql,Object[] param) {
		PreparedStatement pstmt=null;
		int num=0;
		conn=getconn();
		try {
			pstmt=conn.prepareStatement(sql);
			if (pstmt!=null) {
				for (int i = 0; i < param.length; i++) {
					pstmt.setObject(i+1, param[i]);
				}
			}
			num=pstmt.executeUpdate();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			closeAll(conn, pstmt, null);
			
		}
		return num;
	}


实现增删改类似代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值