c3p0连接池
方法一
- 先写c3p0.properties
注意。前面名称可以随便写,后面的内容不能错
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/rent
jdbc.username=root
jdbc.password=123
- 封装工具类读取properties文件
package utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class C3p0JdbcUtils2 {
private static String DRIVER;
private static String USERNAME;
private static String PASSWORD;
private static String URL;
//使用c3p0数据库连接池的方式,获取数据库的连接
private static ComboPooledDataSource comboPooledDataSource= new ComboPooledDataSource();
static {
Properties properties = new Properties();
try {
读取properties文件
properties.load(new FileInputStream(new File("C:\\Users\\bears\\IdeaProjects\\20210926Spring\\src\\properties\\jdbc2.properties")));
//properties.getProperty方式获取文件的driver,url,username,password
DRIVER = properties.getProperty("jdbc.driver");
URL = properties.getProperty("jdbc.url");
USERNAME = properties.getProperty("jdbc.username");
PASSWORD = properties.getProperty("jdbc.password");
//c3p0与数据库的一个连接 comboPooledDataSource.setDriverClass(DRIVER);
comboPooledDataSource.setJdbcUrl(URL);
comboPooledDataSource.setUser(USERNAME);
comboPooledDataSource.setPassword(PASSWORD);
} catch (IOException | PropertyVetoException e) {
e.printStackTrace();
}
}
/*
* 获取连接
*/
public static Connection getConnection() throws SQLException, PropertyVetoException {
//连接池的连接
return comboPooledDataSource.getConnection();
}
}
- 测试
package test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import utils.C3p0JdbcUtils;
import utils.C3p0JdbcUtils2;
import utils.JdbcUtils;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
public class C3p0Test {
public static void main(String[] args) throws PropertyVetoException, SQLException {
//获取连接
Connection connection = C3p0JdbcUtils2.getConnection();
System.out.println(connection);
}
}
方法2
test
package test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import utils.C3p0JdbcUtils;
import utils.C3p0JdbcUtils2;
import utils.JdbcUtils;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
public class C3p0Test {
public static void main(String[] args) throws PropertyVetoException, SQLException {
//创建c3p0连接池对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//提供数据库对象
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/rent");
dataSource.setUser("root");
dataSource.setPassword("123");
Connection connection = dataSource.getConnection();
System.out.println("初始化连接池大小"+dataSource.getInitialPoolSize());
System.out.println(connection);
}
}
方法三
- 编写c3p0-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--这个name是在工具类连接池需要加载的参数-->
<named-config name="haa">
<property name="user">root</property>
<property name="password">123</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/rent</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
</named-config>
</c3p0-config>
- 工具类
//c3p0连接池的配置文件放在某一个路径(src源码包路径)下 然后使用下面这个构造器构建连接池对象的时候
//会自动匹配这个配置文件去读取其中的configName
//配置文件的名字必须叫c3p0-config.xml
package utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class C3p0JdbcUtils {
//读取xml文件
private static DataSource dataSource= new ComboPooledDataSource("haa");
/*
* 获取连接
*/
public static Connection getConnection() throws SQLException, PropertyVetoException {
return dataSource.getConnection();
- 进行测试
package test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import utils.C3p0JdbcUtils;
import utils.C3p0JdbcUtils2;
import utils.JdbcUtils;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
public class C3p0Test {
public static void main(String[] args) throws PropertyVetoException, SQLException {
Connection connection = C3p0JdbcUtils.getConnection();
System.out.println(connection);
}
}