代码如下
package com.polin.market.util;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCUtils {
static ComboPooledDataSource cpds = new ComboPooledDataSource();
// 目的: 为了保证同一个线程中使用同一个连接,声明 本地线程变量
// 本质: 保证同一个线程中共享数据
static ThreadLocal<Connection> local = new ThreadLocal<Connection>();
// 获取连接池
public static DataSource getDataSource() {
return cpds;
}
// 获取连接
public static Connection getConnection() throws SQLException {
// 从ThreadLocal中获取 当前线程的连接
Connection conn = local.get();
// 判断 如果没有得到连接, 从连接池中获取连接,保存到 ThreadLocal
if (conn == null) {
// 从连接池中获取连接
conn = cpds.getConnection();
// 保存到 ThreadLocal
local.set(conn);
}
return conn;
}
}