目录
1、抽取获取数据库连接对象的代码
2、抽取注册驱动代码
3、抽取关闭资源的方法
4、测试
5、抽取配置文件
6、完整工具类代码
前文提到使用jdbc操作数据库进行增删改查的代码重复度比较高,将重复的代码抽取成一个工具类进行代码的复用,简化代码编写
首先观察哪些代码的重复性比较高:
接下来编写Jdbcutil工具类
1、抽取获取数据库连接对象的代码
首先我们想要通过工具类获取到封装了数据库连接信息的数据库连接对象connection
所以需要在JdbcUtil中编写一个方法 返回的是connection
将数据库连接信息通过参数传递进来:
2、抽取注册驱动代码
注册驱动是都需要的,首先想到使用static静态代码块 随着类加载就加载静态代码块 即注册驱动
所以当我们使用jdbcUtil类的时候加载JdbcUtil类的时候就会注册驱动
3、抽取关闭资源的方法
通过方法得到重载编写关闭资源的方法 传递的参数不同 调用的方法不同
public static void close(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement pstmt, Connection conn) {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, PreparedStatement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4、测试
查询
// jdbc工具类测试
public class JdbcUtilTest {
public static void main(String[] args) {
ResultSet resultSet = null;
Connection connection = null;
Statement statement = null;
try {
// 1、注册驱动 获取数据库连接对象
connection = JdbcUtil.getConnection();
// 2、打印connection对象 看看能否获取到数据库连接对象
// System.out.println(connection);
// 定义sql
String sql = "select * from person";
// 获取执行sql的对象
statement = connection.createStatement();
// 执行sql进行查询
resultSet = statement.executeQuery(sql);
// 处理查询结果
while (resultSet.next()) {
System.out.println(resultSet.getString("name") + "---" + resultSet.getString("email"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源 调用工具类的close方法
JdbcUtil.close(resultSet,statement,connection);
}
}
}
但是我们发现数据库连接信息 比如driver url用户密码等信息还是和java代码耦合死的,
当以后我们需要修改数据库信息,比如连接另外一个数据库的时候就需要找到该java代码进行修改 ,非常不是我们想要的。
所以我们需要将数据库连接信息单独抽取出来 形成一个配置文件
继续完善工具类代码
5、抽取配置文件
在src下新建一个properties文件 将数据库连接信息填入
修改JdbcUtil代码
读取配置文件
测试:



