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++ 数组输出
C++中输出数组数据分两种情况:字符型数组和非字符型数组 当定义变量为字符型数组时,采用cout<<数组名; 系统会将数组当作字符串来输出,如: ]={'}; cout << ...
- Java随堂笔记二
变量常量类型转换和命名规范 变量和常量 static double salary = 2500; //属性:变量 //变量作用域: //类变量 static // 局部变量 ...
- .NET CORE 中的缓存使用
Net Framewoke的缓存 1.1 System.Web.Caching System.Web.Caching应该是我们最熟悉的缓存类库了,做ASP.NET开发时用到缓存基本都是使用的这个缓存组 ...
- MVC+Ninject+三层架构+代码生成 -- 总结(一、數據庫)
一.數據表 是參照 別人的庫建表的 ,主鍵都是用int 自增,若是跨數據庫的話,建議使用GUID為主鍵.
- altermanager使用报错
报错如下: level=warn ts=2019-01-24T09:20:01.122920737Z caller=cluster.go:148 component=cluster err=" ...
- 基于tensorflow的简单鼠标键盘识别
import cv2 as cvimport tensorflow as tfimport numpy as npimport random ##以下为数据预处理,分类为cata,总共样本为cata* ...
- 分布式事务:Saga模式
1 Saga相关概念 1987年普林斯顿大学的Hector Garcia-Molina和Kenneth Salem发表了一篇Paper Sagas,讲述的是如何处理long lived transac ...
- C#将异常信息添加到日志
C#将程序抛出的异常信息添加到错误日志 错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 为程序添加错误日志的好处是当程序有运行错误时,根据错 ...
- 解决Ubuntu18.10 网络图标经常消失连不上网问题
我不知道是什么原因,Ubuntu虚拟机经常会出现无法上网的问题? 此时右上角没有网络标志,Settings->NetWork也只有VPN一项,不知道咋用. 在网上终于找到了方法,亲测有效:htt ...
- docker中安装及使用mysql
打算构造一个环境较全的linux环境,所以在本地弄了个docker.然后pull了一个centos的镜像,并打算在此镜像的基本上,构建适合自己的镜像.但在使用时,发现了各种问题,还是费了一些功夫.原因 ...