c3p0
作用
以前需要數據庫連接的時候,就向數據庫要求一個,執行完成後再斷開連接。這樣的方式將會消耗大量的資源和時間。而使用數據庫連接池c3p0,直接利用現有可用連接避免了數據庫連接初始化和釋放過程的時間開銷,從而減少了系統的響應時間。
從開發者角度考慮,減少開發工作量,而且還達到了更好的效果。
使用方法
- 引入相應的jar c3p0-xxx.jar
導入jar包後,右鍵選擇構造路徑,添加到路徑中
- 將c3pθ配置文件添加到src下。要求配置文件名固定: c3p0-config.xml , 位置- -定放在src下面並且編寫(修改)配置文件
- 創建一個數據源對象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
conn = dataSource.getConnection();
- 通過數據源對象獲取連接對 象和關閉連接對象(還到池子中)
public class Demo01 {
public static void main(String[] args) {
//不帶參數:默認找buildpath下c3pθ- config.xml中的<default- config>
ComboPooledDataSource dataSource = new ComboPooledDataSource();
Connection conn;
try {
conn = dataSource.getConnection();
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(conn! =nu1l)
{
conn.close();|
}
}
DBUtil
作用
- 無資源泄漏 - DBUtils類確保不會發生資源泄漏。
- 清理和清除代碼 - DBUtils類提供乾淨清晰的代碼來執行數據庫操作,而無需編寫任何清理或資源泄漏防護代碼。
- Bean映射 - DBUtils類支持從結果集中自動填充javabeans。
DbUtil是apache旗下的一個JDBC封裝的開源工具jar包,使用它調用數據庫CRUD操作非常簡便。
這個纔是重頭戲,大大降低了我們操作數據庫的難度。
使用方法
- 引入jar包dbutils包和commops-io包
和上面類似,src導入jar包後,右鍵選擇構造路徑,添加到路徑中
- 創建一個QueryRunner對象
//首先用C3P0 new一個數據源(建議聲明在daoUtil裏)
public static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
//創建一個QueryRunner對象(使用完後它會自動關閉)
QueryRunner runner = new QueryRunner(dataSource);
- 編寫sql
//使用DButil可以讓我們的重心迴歸編寫SQL代碼
String sql = "select * from emp";
- 調用QueryRunner的方法:
runner.query 或者 runner.update
增刪改 使用 update
查詢 使用 query
完整樣例
// 根據地點查詢部門信息
public static List<Dept> selectDeptByloc(String loc) {
QueryRunner runner = new QueryRunner(DataPoolUtil.dataSource);
String sql = "select * from dept where loc = ?";
try {
return runner.query(sql, new BeanListHandler<Dept>(Dept.class),loc);
} catch (SQLException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
return null;
}
涉及到的類Dept:
package bean;
public class Dept {
private int deptno;
private String dname;
private String loc;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
}
}
附下載鏈接:
C3P0: https://jww.lanzous.com/iqJzIec6drc
DBUtil https://jww.lanzous.com/b015l1akj 密碼:9u1f