C3P0数据连接池:
所需要导入jar包:
package 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 C3P0Utils {
//创建数据源对象
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//获取数据连接对象
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
//关闭数据连接
public static void closeAll(Connection conn,Statement stmt,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//获取数据源
public static DataSource getDateSource(){
return dataSource;
}
}
C3P0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 如果代码中的config名称不是下面的某一个,就会根据默认配置进行查找,如果也没有默认配置,则按照默认值配置进行查找 -->
<default-config>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db1</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="checkoutTimeout">30000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</default-config>
<!-- 配置生产环境的数据库 -->
<named-config name="mysql_pro">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db1</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="checkoutTimeout">30000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</named-config>
<!-- 配置开发环境的数据库 -->
<named-config name="mysql_dev">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db1</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="checkoutTimeout">30000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</named-config>
</c3p0-config>
Druid数据连接池:
所需jar包:
package com.igeekhome.igeekshop.util;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
public class DBUtil {
private static DruidDataSource ds;
private static ThreadLocal<Connection> connection = new ThreadLocal<>();
static {
Properties prop = PropertiesUtil.loadProperties("jdbc.properties");
ds = new DruidDataSource();
ds.setDriverClassName(prop.getProperty("druid.driverClass"));
ds.setUrl(prop.getProperty("druid.jdbcUrl"));
ds.setUsername(prop.getProperty("druid.user"));
ds.setPassword(prop.getProperty("druid.password"));
}
private DBUtil() {
}
public static DataSource getDs() {
return ds;
}
public static Connection getConnection() throws SQLException {
// 先从ThreadLocal中获取连接对象
Connection con = connection.get();
// 1.如果有,则直接返回
if (con != null) {
return con;
}
// 2.如果没有,则从连接池中获取一个新的连接对象,并将该连接对象存入ThreadLocal中
else {
con = ds.getConnection();
connection.set(con);
return con;
}
}
public static void close(Connection con) {
if (con != null) {
try {
con.close();
connection.set(null);
} catch (SQLException e) {
}
}
}
}
读取properties文件的工具类:
package com.igeekhome.igeekshop.util;
import java.io.IOException;
import java.util.Properties;
public class PropertiesUtil {
private PropertiesUtil() {
}
public static Properties loadProperties(String fileName) {
Properties prop = new Properties();
try {
prop.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName));
} catch (IOException e) {
e.printStackTrace();
}
return prop;
}
}
jdbc.properties
druid.driverClass=com.mysql.jdbc.Driver
druid.jdbcUrl=jdbc:mysql://localhost:3306/igeekshop
druid.user=root
druid.password=root