[TOC]
# 簡介
實際開發中“獲得連接”或“釋放資源”是非常消耗系統資源的兩個過程,為了解決此類性能問題,通常情況我們采用連接池技術,來共享連接Connection。這樣我們就不需要每次都創建連接、釋放連接了,這些操作都交給了連接池
用池來管理Connection,這樣可以重復使用Connection。有了池,所以我們就不用自己來創建Connection,而是通過池來獲取Connection對象。當使用完Connection后,調用Connection的close()方法也不會真的關閉Connection,而是把Connection“歸還”給池。池就可以再利用這個Connection對象了。
Java為數據庫連接池提供了公共的接口:javax.sql.DataSource,各個廠商需要讓自己的連接池實現這個接口。這樣應用程序可以方便的切換不同廠商的連接池!
常見的連接池:DBCP、C3P0。
# DBCP連接池
DBCP也是一個開源的連接池,是Apache Common成員之一,tomcat內置的連接池。
## 導入jar包
dbcp和pool,當然之前的包還是要的mysql和dbutils
## 編寫工具類
連接數據庫表的工具類, 采用DBCP連接池的方式來完成,Java中提供了一個連接池的規則接口 :
DataSource : 它是java中提供的連接池,作為 DriverManager 工具的替代項。在DBCP包中提供了DataSource接口的實現類,我們要用的具體的連接池 BasicDataSource類
~~~
public class JDBCUtils {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/daydb";
public static final String USERNAME = "root";
public static final String PASSWORD = "root";
/*
* 創建連接池BasicDataSource
*/
public static BasicDataSource dataSource = new BasicDataSource();
//靜態代碼塊
static {
//對連接池對象 進行基本的配置
dataSource.setDriverClassName(DRIVER); // 這是要連接的數據庫的驅動
dataSource.setUrl(URL); //指定要連接的數據庫地址
dataSource.setUsername(USERNAME); //指定要連接數據的用戶名
dataSource.setPassword(PASSWORD); //指定要連接數據的密碼
}
/*
* 返回連接池對象
*/
public static DataSource getDataSource(){
return dataSource;
}
}
~~~
## 工具類的使用
~~~
// 插入功能
@Test
public void insert(){
try {
//獲取一個用來執行SQL語句的對象 QueryRunner
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";
Object[] params = {"股票收入", 5500, "收入"};
int line = qr.update(sql,params);
//結果集處理
System.out.println("line = " + line);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//刪除功能
@Test
public void delete(){
try {
//創建一個QueryRunner對象,用來完成SQL語句的執行
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
//執行SQL語句
String sql = "DELETE FROM zhangwu WHERE name = ?";
Object[] params = {"股票收入"};
int line = qr.update(sql, params);
//結果集的處理
System.out.println("line="+line);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//查詢功能,將結果集中第一條記錄封裝到一個指定的javaBean中。
@Test
public void search(){
try{
//獲取QueryRunner
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
//執行SQL語句
String sql = "SELECT * FROM zhangwu";
Object[] params = {};
Product p = qr.query(sql, new BeanHandler<Product>(Product.class), params);
//結果集處理
System.out.println(p);
} catch(SQLException e){
throw new RuntimeException(e);
}
}
~~~
# 常見配置項

參考文檔:http://commons.apache.org/proper/commons-dbcp/configuration.html
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化