JDBC連接池
DBCP:Apache推出的Database Connection Pool
使用步驟:
> 添加jar包 commons-dbcp-1.4.jar commons-pool-1.5.6.jar
l 創建DBCP連接池工具類
n 規范接口:javax.sql.DataSource接口
n 實現類:BasicDataSource, 重寫接口中的方法getConnection()
使用讀取配置文件的方式(加案例)
DBCP中有一個工廠類BasicDataSourceFactory
工廠類中有一個靜態方法
static DataSource createDataSource(Properties prop)
此方法返回的就是DataSource接口的實現類對象BasicDataSource
創建Propertis集合+IO技術讀取配置文件
把配置文件傳入BasicDataSourceFactory靜態方法createDataSource中
public class DBCPUtilsReadConfig {
private static DataSource dataSourse;
static{
try {
InputStream is = DBCPUtilsReadConfig.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
//創建Propertis集合
Properties pro=new Properties();
pro.load(is);
//把配置文件傳入BasicDataSourceFactory靜態方法createDataSource中
dataSourse = BasicDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
throw new RuntimeException("讀取配置文件失敗");
}
}
//創建獲取數據庫連接對象的方法
public static Connection getConnection(){
try {
return dataSourse.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e+"連接數據庫失敗");
}
}
public static void close(ResultSet rs,Statement stat,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stat !=null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
C3P0連接池
C3P0開源免費的連接池!目前使用它的開源項目有:Spring、Hibernate等。使用第三方工具需要導入jar包,c3p0使用時還需要添加配置文件 c3p0-config.xml
創建C3P0連接池的工具類
連接的規范接口:javax.sql.DataSource接口
接口的實現類對象ComboPooledDataSource
成員位置創建ComboPooledDataSource對象
C3P0內部會自動掃描並解析xml文件,給ComboPooledDataSource設置數據量的4大連接信息
創建一個靜態方法返回Connection對象
創建一個靜態方法釋放資源
publicclass C3P0UtilsReadXML {
privatestatic ComboPooledDataSource dataSource = new ComboPooledDataSource();
//使用靜態代碼塊給ComboPooledDataSource設置4大數據量連接信息
/*static{
try {
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");
dataSource.setUser("root");
dataSource.setPassword("root");
} catch (Exception e) {
throw new RuntimeException("設置連接信息失敗!");
}
}*/
// 創建一個返回ComboPooledDataSource的方法
publicstatic DataSource getDataSource(){
returndataSource;
}
// 創建一個靜態方法返回Connection對象
publicstatic Connection getConnection() {
try {
returndataSource.getConnection();
} catch (SQLException e) {
thrownew RuntimeException(e + "獲取數據庫連接失敗");
}
}
// 定義一個釋放資源的方法
publicstaticvoid close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用DBUtils工具類對數據庫表進行增刪改查
DBUtils工具類作用:簡化JDBC的開發(6步)
DBUtils有3個核心類
1.QueryRunner:使用QueryRunner中的方法對數據庫進行增刪改查
2.DbUtils:提供了大量的釋放資源的方法
3.ResultSetHandler接口:提供了處理查詢結果集的方法
QueryRunner類
構造方法:
QueryRunner() 空參數構造方法
調用更新和查詢方法的時候,需要傳入Connection對象
QueryRunner(DataSource ds) 帶DataSource數據庫連接池的構造方法
調用更新和查詢方法的時候QueryRunner會自動從DataSource實現類對象中獲取數據庫連接對象,使用完畢會自動歸還
成員方法:
執行執行增刪改的成員方法
int update(Connection conn, String sql, Object... params)用來執行增刪改的SQL
int update(String sql, Object... params) 用來執行增刪改的SQL
參數:
Connection conn:數據庫連接對象
String sql:拼接的sql語句,可以使用?占位符
Object... params:?占位符的實際參數,可以使用Object[]
返回值:
int:執行的有效行數
執行執行查詢的成員方法
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
參數:
Connection conn:數據庫連接對象
String sql:拼接的sql語句,可以使用?占位符
Object... params:?占位符的實際參數,可以使用Object[]
ResultSetHandler<T> rsh:用來存儲查詢之后的結果集,可以傳入ResultSetHandler9種實現類對象
返回值:
<T> T:傳入的ResultSetHandler實現類不同,返回的結果集也不同,使用泛型,傳入什么結果集,就返回對應的類型