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的更多相关文章

  1. Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...

  2. springMVC注解方式+easyUI+MYSQL配置实例

    刚接触springMVC,使用的注解方式,也在学习阶段,所以把自己学习到的记下来.本文利用springMVC从数据库读取用户信息为例,分享一下. 1.准备相关架包及资源.因为使用springMVC+e ...

  3. MyBatis配置C3P0连接池

    一.导包 c3p0包     mybatis包 数据库的连接包 二.继承UnpooledDataSourceFactory的类 Mybatis 没有帮开发者实现 c3p0 数据库连接池,故需要使用者自 ...

  4. Hibernate - 配置c3p0

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...

  5. (七)Spring 配置 c3p0 连接池

    目录 在 Spring 核心配置文件中配置 c3p0 连接池 配置 JdbcTemplate 对象 在 service 层注入 userDao 在 UserDao 里面注入 JdbcTemplate ...

  6. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  7. MySQL 配置

    MySQL 配置 1.服务启动: (1)使用 service 启动:service mysqld start (2)使用 mysqld 脚本启动:/etc/inint.d/mysqld start ( ...

  8. mysql配置mysql-proxy读写分离

    MySQL配置读写分离 192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读.myql-proxy的IP是192.168.23.13 ...

  9. mysql配置之skip-external-locking

    转载:http://www.kuqin.com/database/20120815/328905.html MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参 ...

随机推荐

  1. Java学习:迭代器简介

    迭代器 java.util.Iterator接口:迭代器(对集合进行遍历) 有两个常用的方法 boolean hasNext() 如果仍有元素可以迭代,则返回 true. 判断集合中还有没有下一个元素 ...

  2. Java的表达式和运算符

    一.算术运算符 运算符 + - * / % 说明 加 减 乘 除 取模(余数) 例子 1+2 5-3 20*5 6/4 30%9 结果 3 2 100 1 3 int x = 10; int y = ...

  3. 关于使用mySqlSugar插入数据异常解决方案

    项目的解决方案中引用的有mysqlsugar的数据库操作库,在使用插入数据过程中一些特殊的生僻字或表情符号总会提示: Incorrect string value: '\xF0\x9F...' for ...

  4. SQL语句--删除掉重复项只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  5. .net代码混淆

    本人主要记录一下学习心得,.net关于代码混淆的知识 1.代码混淆的原理,转载链接 2.代码混淆工具,ConfuserEx的使用,转载地址

  6. k-匿名算法

    30 November 2019 18:31     人类历史上,除了计算机外从没有一项技术可以在短短的几十年间,能够全方位的影响整个社会的各个领域.技术的发展,少不了许多代人为之的努力.无论是在计算 ...

  7. PyTorch 安装 报错,原因是pip 不是64位的。

    原因: import pip._internal print(pip._internal.pep425tags.get_supported()) 换位64位的python版本. import pip. ...

  8. sweetalert 弹框简单使用

    sweetalert网站 简单使用教程 拷贝文件 放到项目中 使用 页面效果 修改代码应用到事件中 成功删除演示(后台数据也会删除) 作 者:郭楷丰 出 处:https://www.cnblogs.c ...

  9. JavaScript 调试 debug

    一.错误 1.语法错误 出现错误,有提示,很容易的解决. 2.逻辑错误 不容易发现 二.调试方式 1.alert() 方式 2.console.log()/console.error() 方式 3.断 ...

  10. Python的object和type理解及主要对象层次结构

    一.Object与Type 1.摘自Python Documentation 3.5.2的解释 Objects are Python’s abstraction for data. All data ...