一、为什么要封装Jdbc工具类
使用Jdbc连接数据库时,总会有一些代码是必不可少的,如加载驱动、获取连接、释放资源等。为了提高重用性,可以将他们封装在一个工具类中。
二、Jdbc工具类的功能
- 1:properties配置文件 封装获取连接 释放资源 提高代码复用性√
- 2:类加载时加载驱动√
- 3:ThreadLocal控制事务
- 4:连接池,提高资源利用率
- 5:rowmapper封装 减少代码冗余
- 6:template封装 减少dao层代码冗余
三、实现封装,JdbcUtil.java:
下面的代码仅实现前两种功能,剩余的功能会在以后的学习中实现,JdbcUtil.java:
package util;
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.Properties;
/**
* Jdbc工具类
* 1:properties配置文件 封装获取连接 释放资源 提高代码复用性√
* 2:类加载时加载驱动√
* 3:ThreadLocal控制事务×
* 4:连接池,提高资源利用率×
* 5:rowmapper封装 减少代码冗余×
* 6:template封装 减少dao层代码冗余×
* @author 郭乾亮1998
*
*/
public class JdbcUtil {
//创建properties
static Properties pro = new Properties();
//加载驱动
static{
InputStream is = null;
try {
is = JdbcUtil.class.getResourceAsStream("/conf/db.properties");
//加载文件
pro.load(is);
Class.forName(pro.getProperty("driverClassName"));
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//获取连接
public static Connection getConnection() throws Exception{
String url = pro.getProperty("url");
String user = pro.getProperty("username");
String password = pro.getProperty("password");
Connection conn = DriverManager.getConnection(url,user,password);
return conn;
}
//释放资源
public static void release(ResultSet rs,PreparedStatement pstm,Connection conn) throws Exception{
if(rs!=null){
rs.close();
}
if(pstm!=null){
pstm.close();
}
if(conn!=null){
conn.close();
}
}
}
conf文件夹中的properties文件如下设置:
三、封装测试,TestJdbcUtil类:
package jdbc;
import java.sql.Connection;
import util.JdbcUtil;
public class TestJdbcUtil {
public static void main(String[] args) throws Exception {
Connection conn = JdbcUtil.getConnection();
System.out.println(conn);
JdbcUtil.release(null, null, conn);
}
}