目录
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工程
- 创建病人检查记录的实体类
- 查询病人的检查记录