Mysql配置C3P0
1. 需要导入的包
- c3p0-0.9.5.2.jar
- mchange-commons-0.2.15.jar
- mysql-connector.jar
2. 配置xml
创建c3p0-config.xml文件,名字不能改动,并且放到src下,c3p0包会自动到src下查找c3p0-config.xml,名字错了,地方不对都不能配置成功
配置
<c3p0-config>
<!-- 默认配置,如果没有指定使用则使用这个配置 -->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password"></property>
<property name="checkoutTimeout">30000</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">40</property>
<property name="minPoolSize">30</property>
<property name="maxPoolSize">50</property>
<property name="maxStatements">200</property>
<property name="maxStatementsPerConnection">20</property>
</default-config>
<!-- 自定义配置 -->
<named-config name="Howl">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/zero_demo</property>
<property name="user">root</property>
<property name="password"></property>
<property name="checkoutTimeout">30000</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">40</property>
<property name="minPoolSize">30</property>
<property name="maxPoolSize">50</property>
<property name="maxStatements">200</property>
<property name="maxStatementsPerConnection">20</property>
</named-config>
</c3p0-config>
或者到官网查看标准配置 C3P0

3. C3P0Util工具类
public class C3P0Util {
// num = 1 使用默认的
private static ComboPooledDataSource comboPooledDataSourceDefault = new ComboPooledDataSource();
// num = 2 使用自定义的
private static ComboPooledDataSource comboPooledDataSourceMydefine = new ComboPooledDataSource("Howl");
public static Connection getConnection(int num){
try {
if(num == 1){
return comboPooledDataSourceDefault.getConnection();
}else if(num == 2){
return comboPooledDataSourceMydefine.getConnection();
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
4. 测试
public class Test {
public static void main(String[] args) throws SQLException {
// 分别在两个不同的库设计了一张表,数据不同
String sql = "SELECT * FROM user";
// 使用默认数据源
Connection connOne = C3P0Util.getConnection(1);
PreparedStatement psOne = connOne.prepareStatement(sql);
ResultSet rsOne = psOne.executeQuery();
while(rsOne.next()){
System.out.println(rsOne.getString("username"));
}
connOne.close();
System.out.println("-------人工分割线-------");
// 使用自定义的数据源
Connection connTwo = C3P0Util.getConnection(2);
PreparedStatement psTwo = connTwo.prepareStatement(sql);
ResultSet rsTwo = psTwo.executeQuery();
while(rsTwo.next()){
System.out.println(rsTwo.getString("username"));
}
connTwo.close();
}
}
输出结果
Howl
-------人工分割线-------
123123
5. 验证
验证Close方法在连接池中是归还给池,而不是关闭
public static void main(String[] args) throws SQLException {
// 循环获取40个连接,输出其地址,然后关闭连接
// 若关闭之后,再获取的连接地址有重复,则说明该连接没有被真正关闭,而是归还到连接池
// 这里的关闭函数被c3p0动态代理了,被改写为放入连接池
for(int i = 0; i < 40;i++) {
Connection conn = C3P0Util.getConnection(1);
System.out.println(conn);
conn.close();
}
}
// 列出部分,可以看到地址重复,验证正确
com.mchange.v2.c3p0.impl.NewProxyConnection@6aaa5eb0 [wrapping: com.mysql.jdbc.JDBC4Connection@50cafc0a]
com.mchange.v2.c3p0.impl.NewProxyConnection@1a407d53 [wrapping: com.mysql.jdbc.JDBC4Connection@68c80b21]
com.mchange.v2.c3p0.impl.NewProxyConnection@5ebec15 [wrapping: com.mysql.jdbc.JDBC4Connection@50cafc0a]
Mysql配置C3P0的更多相关文章
- Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...
- springMVC注解方式+easyUI+MYSQL配置实例
刚接触springMVC,使用的注解方式,也在学习阶段,所以把自己学习到的记下来.本文利用springMVC从数据库读取用户信息为例,分享一下. 1.准备相关架包及资源.因为使用springMVC+e ...
- MyBatis配置C3P0连接池
一.导包 c3p0包 mybatis包 数据库的连接包 二.继承UnpooledDataSourceFactory的类 Mybatis 没有帮开发者实现 c3p0 数据库连接池,故需要使用者自 ...
- Hibernate - 配置c3p0
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...
- (七)Spring 配置 c3p0 连接池
目录 在 Spring 核心配置文件中配置 c3p0 连接池 配置 JdbcTemplate 对象 在 service 层注入 userDao 在 UserDao 里面注入 JdbcTemplate ...
- linux下安装apache与php;Apache+PHP+MySQL配置攻略
1.apache 在如下页面下载apache的for Linux 的源码包 http://www.apache.org/dist/httpd/; 存至/home/xx目录,xx是自建文件 ...
- MySQL 配置
MySQL 配置 1.服务启动: (1)使用 service 启动:service mysqld start (2)使用 mysqld 脚本启动:/etc/inint.d/mysqld start ( ...
- mysql配置mysql-proxy读写分离
MySQL配置读写分离 192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读.myql-proxy的IP是192.168.23.13 ...
- mysql配置之skip-external-locking
转载:http://www.kuqin.com/database/20120815/328905.html MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参 ...
随机推荐
- 数据结构部分总结(c语言版)
这是一个 /*此头文件适用于串其中包括最基本的函数操作 OK代表成功NO代表失败FS为特殊失败的标志 注:此头文件中的初始化使用'0'代表结束的 使用者可以根据需要自行改变,最后一 个函数为KMP算法 ...
- 命令创建.net core3.0 web应用详解(超详细教程)
原文:命令创建.net core3.0 web应用详解(超详细教程) 你是不是曾经膜拜那些敲几行代码就可以创建项目的大神,学习了命令创建项目你也可以成为大神,其实命令创建项目很简单. 1.cmd命令行 ...
- Django(二)模板
一.模板概念 1.Django通过模板动态生成html 2.模板的加载位置 模板一般建立在templates文件夹中,全局路径的设置在settings.py中 DIRS:决定了整个项目的模板路径的 ...
- 记一次Spring boot集成mybatis错误修复过程 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
最近自己写了一份代码签入到github,然后拉下来运行报下面的错误 Error starting ApplicationContext. To display the conditions repor ...
- IOS/Safari下document对象的scrollHeight值比Chrome更大
之前写滚动加载更多需求时,写了这样一段错误代码 应该获取滚动列表的scrollHeight.clientHeight和scrollTop而不是整个页面的. 因为整个页面不仅包括了滚动列表,还包括了头部 ...
- sweetalert 弹框简单使用
sweetalert网站 简单使用教程 拷贝文件 放到项目中 使用 页面效果 修改代码应用到事件中 成功删除演示(后台数据也会删除) 作 者:郭楷丰 出 处:https://www.cnblogs.c ...
- Workerman MySQL组件Connection用法总结
一.初始化连接 $db = new \Workerman\MySQL\Connection('host', 'port', 'user', 'password', 'db_name'); 二.获取所有 ...
- Numpy和Pandas的使用入门
Numpy Numpy基本数据结构 np.array()函数接受一个多维list,返回对应纬度的矩阵 vector = np.array([1, 2, 3, 4]) matrix = np.array ...
- python 使用Anaconda管理项目环境
Pycharm没有内置的python解释器,需要我们自己下载python解释器. 在很多python项目中,会导入第三方的模块,逐个去下载导入很不方便. 我们通常使用Anaconda来管理python ...
- 【恢复】Redo日志文件丢失的恢复
第一章 Redo文件丢失的恢复 1.1 online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...