jdbc连接池c3p0封装好的工具类
package cn.wyf.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static DataSource dataSource = new ComboPooledDataSource();
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
// 直接可以获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
// 获取连接对象
public static Connection getCurrentConnection() throws SQLException {
Connection con = tl.get();
if (con == null) {
con = dataSource.getConnection();
tl.set(con);
}
return con;
}
// 开启事务
public static void startTransaction() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.setAutoCommit(false);
}
}
// 事务回滚
public static void rollback() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.rollback();
}
}
// 提交并且 关闭资源及从ThreadLocall中释放
public static void commitAndRelease() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.commit(); // 事务提交
con.close();// 关闭资源
tl.remove();// 从线程绑定中移除
}
}
// 关闭资源方法
public static void closeConnection() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.close();
}
}
public static void closeStatement(Statement st) throws SQLException {
if (st != null) {
st.close();
}
}
public static void closeResultSet(ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
}
}
//c3p0 用c3p0要有一个xml配置文件
package cn.wyf.utils;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
/*
* 使用DBCP 实现数据可连接池
* 连接池的配置
* 四个基本项
* 其它配置 自定义
* */
public class JDBCUtilsPool {
// 1创建 BasicDataSource 对象
private static BasicDataSource datas=new BasicDataSource();
static{
// 2 连接数据库的4个基本信息
datas.setDriverClassName("com.mysql.jdbc.Driver");
datas.setUrl("jdbc:mysql://localhost:3306/gl");
datas.setUsername("root");
datas.setPassword("root");
//3 连接池 连接数量的配置
datas.setInitialSize(20);//初始化连接 20
datas.setMaxActive(30);
datas.setMaxIdle(5);//最大空闲数
datas.setMinIdle(1);
//4 定义静态方法 返回 BasicDataSource类的对象
}
public static DataSource getDataSource(){
return datas;
}
}