2021/10/8 Java数据库编程 第九章 数据访问和DAO模式

目录

Properties配置文件

DAO模式好处,组成

DAO模式下的代码

DAO中固定的东西,通常:

 本章总结


Properties配置文件

        Java的配置文件通常是扩展名为.properties的文件,文件中以"键=值"的格式储存数据。在Properties文件中可以用"#"添加注释。通常情况下,为数据库访问添加的配置文件会被命名为database.properties。位于Src文件下如图:

 

DAO模式好处,组成


1.软件开发中的分层开发思想和技术。将一个软件分成多个层次进行开发,化大为小,分而治之,从而缩短软件开发时间,提高软件开发效率。

2.DAO模式使用时:

隔离了数据访问代码和业务逻辑代码。把需要访问的数据库数据在DAO中写出方法,定义参数,在业务逻辑代码中只用调用方法就行。

隔离了不同的数据库实现,因为开始是接囗编程,当数据库变化时,只要把接口的实现类增加即可。

3.DAO组成分为:

DAO接囗,对数据库的操作定义成抽象方法。

DAO实现,针对不同数据库,依接口实现不同方法。

实体类,用于存放,传输数据。

数据连接和关闭的工具类。提高复用。

DAO模式下的代码


以下图为说明:

1.第一个包dao下面的BaseDao通常有数据库的连接,和关闭。比较固定,可以先写,或通用。

2.但我们通常先写实体类,如图的entity包,来存下从数据库获取的信息,一般一张表做为一个实体类。只有这样才能通过实体类来操作。

3.接着通过entity来写Dao接口像图中的:MasterDao,PetDao,内有像从数据库获取相对实体类(查)的方法,更新的方法(增删改)。

4.实现接口,如图Impl包实现,实体类相对应的dao,图中MasterJDBCDao,PetJDBCDao.

5.以上差一多就是一个DAO了,像图上的manager,test,test是调试的类,manager是相关操作常用的类。
 

DAO中固定的东西,通常:

一:BaseDao
public class BaseDao {
 private static String driver = 
  "oracle.jdbc.driver.OracleDriver";// 数据库驱动字符串
 private static String url = 
  "jdbc:oracle:thin:@10.0.0.75:1521:ORCL";// 连接URL字符串
 private static String user = "jbit"; // 数据库用户名
 private static String password = "bdqn"; // 用户密码
 /**
  * 获取数据库连接对象。
  */
 public Connection getConnection() {
  Connection conn = null;// 数据连接对象
  // 获取连接并捕获异常
  try {
   Class.forName(driver);
   conn = DriverManager.getConnection(url, user, password);   
  } catch (Exception e) {
   e.printStackTrace();// 异常处理
  }
  return conn;// 返回连接对象
 }
 /**
  * 关闭数据库连接。
  * @param conn 数据库连接
  * @param stmt Statement对象
  * @param rs 结果集
  */
 public void closeAll(Connection conn, Statement stmt, 
     ResultSet rs) {
  // 若结果集对象不为空,则关闭
  if (rs != null) {
   try {
    rs.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  // 若Statement对象不为空,则关闭
  if (stmt != null) {
   try {
    stmt.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  // 若数据库连接对象不为空,则关闭
  if (conn != null) {
   try {
    conn.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
}

二:查的方法
XX代表实体类

public List<实体类XX> findXXByTid(int tid) {
  String sqlStr="select * from XX  where......";
  List<XX> XXsList = new ArrayList<XX>();
  try {
   // 1得到连接
   conn = baseDao.getConnection();
   // 2得到执行对象
   pstmt = conn.prepareStatement(sqlStr);
   pstmt.setInt(1, tid) ;
   //3执行
   rst = pstmt.executeQuery();
   while (rst.next()) {
    XX xx = new XX();
    news.setNId(rst.getInt("nid"));.....

.........
  ;
    newsList.add(news);
   }
  } catch (Exception ex) {
   ex.printStackTrace();
  } finally {
   baseDao.closeAll(conn, pstmt, rst);
  }
  return newsList;
 }

三.增删改的方法
public ResultSet executeQuerySQL(String preparedSql, String[] param) {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  // int num = 0;

  /* 处理SQL,执行SQL */
  try {
   conn = getConn(); // 得到数据库连接
   pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象
   if (param != null) {
    for (int i = 0; i < param.length; i++) {
     pstmt.setString(i + 1, param[i]); // 为预编译sql设置参数
    }
   }
   rs = pstmt.executeQuery(); // 执行SQL语句
  } catch (ClassNotFoundException e) {
   e.printStackTrace(); // 处理ClassNotFoundException异常
  } catch (SQLException e) {
   e.printStackTrace(); // 处理SQLException异常
  }
  return rs;
 }

因数这preparedSql是可带?的,所以后接String[]

 本章总结

  1. DAO模式是当前非常流行的数据访问模式。
  2. DAO位于业务逻辑和持久化数据之间,可实现对持久化数据的访问。通俗来讲,DAO就是将数据库操作都封装起来,对外提供相应的接口。
  3. 在面向对象的设计过程中,用"套路"解决特定问题,被称为模式。DAO模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离,对外提供面向对象的数据访问接口。
  4. DAO模式的优势在于实现了两次隔离。
    1. 隔离了数据访问代码和业务逻辑代码,即代码解耦。业务逻辑代码直接调用DAO接口中的方法即可,完全感觉不到数据表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码。这降低了耦合性,提高了复用性。
    2. 隔离了不同数据库的实现。采用面向接口编程,如果底层数据库变化,如由MySQL变成Oracle,只要增加DAO接口的新实现类,原有MySQL实现就不用修改。这降低了代码的耦合性,提高了代码的扩展性和系统的可移植性。
  5. 典型的DAO模式主要由以下几部分组成。
    1. 实体类:用于存放与传输对象数据。
    2. 数据库操作工具类:即BaseDao类,避免了数据库连接和关闭代码的重复使用,方便进行修改。
    3. DAO接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现。
    4. DAO实现类:针对不同数据库给出DAO接口定义方法的具体实现  
  6. 使用Properties配置文件可以解决在使用数据库的种类不变的情况下,通过修改配置文件信息避免重复编译工程的问题。
  7. 实体类是在Java项目中与数据表对应的类。
  8. DAO模式通过采用面向接口编程降低代码间的耦合性,提高代码的可扩展性和可维护性。

练习小作业:

  1. 使用Properties配置文件改造HospitalSystem工程
  2. 创建病人检查记录的实体类
  3. 查询病人的检查记录
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abcdzzr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值