正文之前
在之前的文章講到了傳統的JDBC連接MySQL的方式,但是這樣的方式在進行多個連接時,就顯得效率低下,明顯不如連接池的效率,所以我們這次來講解一下JDBC連接池之一:c3p0
正文
1. 准備工作
- IntelliJ IDEA
- c3p0-0.9.5.2(jar)
- MySQL
2. 配置 c3p0-config.xml
default-config
在配置之前,需要先進行建立數據庫的工作,本文還是采用上篇文章中的名為 customer 的數據庫
然后在工程的 src 目錄下新建一個名為 c3p0-config 的XML文件(文件名不能自定義)
然后開始配置:
<!-- 數據庫地址 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/customer</property>
<!-- 數據庫驅動 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 用戶名 -->
<property name="user">root</property>
<!-- 密碼 -->
<property name="password">3865933</property>
先寫基本的數據庫信息,然后我們再來寫常用的連接池屬性,若要查詢全部屬性,可閱讀官網指南,屬性也包含於
<!-- 連接池初始化時創建的連接數 -->
<property name="initialPoolSize">1</property>
<!-- 連接池中的最小連接數 -->
<property name="minPoolSize">1</property>
<!-- 連接池中的最小連接數 -->
<property name="maxPoolSize">2</property>
<!-- 無空閑連接可用時,可一次性創建新連接的數量 -->
<property name="acquireIncrement">1</property>
<!-- 獲取數據庫連接失敗后重復嘗試的次數 -->
<property name="acquireRetryAttempts">1</property>
<!-- 兩次連接的間隔時間,單位為毫秒 -->
<property name = "acquireRetryDelay">1000</property>
給出完整的文件圖片:

named-config
可以添加 named-config 來增加數據庫配置,內容與default-config一致,我連接了另一個數據庫 product :

3. 寫個demo
先搞定數據源:
private static ComboPooledDataSource dataSource1 = new ComboPooledDataSource("test");
private static ComboPooledDataSource dataSource2 = new ComboPooledDataSource();
根據數據源,進行連接
private static void getConnection(){
try{
Connection connection = dataSource1.getConnection();
System.out.println("連接數據庫 product 成功!");
connection.close();
System.out.println("數據庫連接已關閉!");
}catch(Exception e){
System.out.println("連接數據庫失敗!");
}
try{
Connection connection = dataSource2.getConnection();
System.out.println("連接數據庫 customer 成功!");
connection.close();
System.out.println("數據庫連接已關閉!");
}catch(Exception e){
System.out.println("連接數據庫失敗!");
}
}
public static void main(String[] args){
getConnection();
}
運行結果:

如果需要有多個連接,使用連接池是不二之選,關於c3p0的講解到此為止了,謝謝。
