1.阿里巴巴的druid(德鲁伊)数据库连接池
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import java.util.Properties;
public class DruidDemo {
public static void main(String[] args) {
Properties pro = new Properties();
DataSource dataSource = null;
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// pro.load(DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties"));
//此配置文件名称任意,但内容必须是properties格式
pro.load(Objects.requireNonNull(DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties")));
dataSource = DruidDataSourceFactory.createDataSource(pro);
connection = dataSource.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery("select * from user");
while (resultSet.next()) {
System.out.println(resultSet.getString("uname"));
}
//System.out.println(connection);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.c3p0数据库连接池
- 配置文件名称必须是c3p0-config.xml
<c3p0-config>
<!--使用默认的配置读取连接池对象-->
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/users?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">311776</property>
<property name="initialPoolSize">10</property>
<!-- <property name="maxIdleTime">30</property>-->
<property name="checkoutTimeout">3000</property>
<property name="maxPoolSize">20</property>
<property name="maxStatements">200</property>
</default-config>
<!--使用指定名称的的配置读取连接池对象-->
<named-config name="mysql">
<!--连接参数-->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/users?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">311776</property>
<!--连接池参数-->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">10</property>
<!--<property name="maxIdleTime">30</property>-->
<!--超过连接最大超时时间 如果不设置超过最大连接数量会出现拥塞-->
<property name="checkoutTimeout">3000</property>
<!--最大的连接数量 -->
<property name="maxPoolSize">20</property>
<!--<property name="minPoolSize">5</property>-->
<property name="maxStatements">200</property>
</named-config>
</c3p0-config>
测试代码
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
public class C3p0Test {
/**
* c3p0数据库连接池
* 配置文件名称为c3p0-config.xml
*/
public static void main(String[] args) throws Exception {
//c3p0 根据配置文件信息创建数据库连接池
DataSource ds = new ComboPooledDataSource("mysql");
for (int i = 0; i < 50; i++) {
Connection connection = ds.getConnection();
System.out.println(i+" "+connection);
}
}
}