dao模式

Dao模式:

1.      什么是持久化

持久化即是将我们需要用到的一些数据信息,持久化存储到磁盘中。

 

2.      持久化的实现方式

普通文本:txt,excel

Xml形式:键值对形式读取数据

数据库形式:

 

3.      为什么要封装JDBC

提高代码复用

维护代码方便

 

4.      怎么样来封装JDBC

 

Dao接口:

Dao的实现类:

实体类:

数据库连接工具类:

 

5.      使用JDBC的封装完成了删除和查询操作,并且使用了实体类来封装数据

普通的传入参数的方式进行的修改

 

 

6.      封装参数,对比增删改操作的区别,并且提取出共同的操作

 


 

我们希望将增删改共同的代码提取出来,放到一个基类里面,让所有的dao去继承

 

7.      提取数据库打开和关闭的共有代码,以供复用

 

 

 

8、properties类读取配置文件

配置文件路径

加载配置文件到输入流

从输入流读取属性列表

根据指定的键来获取相应的值

 

9.数据库基类

package cn.daodemo7.dao;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import cn.daodemo7.entity.Student;

/**
 * 项目名称:DaoDemo7   
 * 类名称:BaseDao   
 * 类描述:   TODO
 * 创建人:Teacher 曾
 * 创建时间:2017-7-13 上午9:01:15     
 * @version V1.0
 */
public class BaseDao {
	private static String driver;
	private static String url;
	private static String user;
	private static String password;
	
	Connection conn=null;
	PreparedStatement pstat=null;
	ResultSet rs=null;
	static{
		init();
	}
	public static void init() {
		//读取数据库参数的配置文件database.properties
		Properties properties=new Properties();
		/*配置文件路径
		加载配置文件到输入流
		从输入流读取属性列表
		根据指定的键来获取相应的值*/
		String config="database.properties";
		try {
			InputStream is=BaseDao.class.getClassLoader().
					getResourceAsStream(config);
			properties.load(is);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		driver=properties.getProperty("driver");
		url=properties.getProperty("url");
		user=properties.getProperty("user");
		password=properties.getProperty("password");
	}
	
	/**
	 * 通用的增删改方法
	 * */
	public int updateExecute(String sql,Object[] params){
		int result=0;
		try {
			/*Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection
					("jdbc:mysql://localhost:3306/zxwd", "root", "root");*/
			conn=openConn();
			pstat=conn.prepareStatement(sql);
			for (int i=0;i<params.length;i++) {
				pstat.setObject(i+1, params[i]);
			}
			result=pstat.executeUpdate();
		}  catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			closeConn();
		}
		return result;
	}

	/**
	 * 通用的查询方法
	 */
	public ResultSet select(String sql,Object[] params){
		try {
			pstat=openConn().prepareStatement(sql);
			for (int i=0;i<params.length;i++) {
				pstat.setObject(i+1, params[i]);
			}
			rs=pstat.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return rs;
	}

	/**
	 * 开启数据库连接
	 */
	public Connection openConn(){
		try {
			Class.forName(driver);
			conn=DriverManager.getConnection
					(url, user,password);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	

	/**
	 * 关闭数据库连接
	 */
	public void closeConn(Connection conn,PreparedStatement pstat,ResultSet rs){
		if (rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (pstat!=null) {
			try {
				pstat.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值