dao模式

来源:互联网 发布:海关信息进出口数据 编辑:程序博客网 时间:2024/05/22 01:57

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.propertiesProperties 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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 blocke.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 blocke.printStackTrace();}return rs;}/** * 开启数据库连接 */public Connection openConn(){try {Class.forName(driver);conn=DriverManager.getConnection(url, user,password);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();}}if (pstat!=null) {try {pstat.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (conn!=null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}