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