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. 类的练习3——python编程从入门到实践

    9-13 使用OrderedDict: 在练习6-4中,使用一个标准字典来表示词汇表.使用OrderedDict类来重写这个程序,并确认输出的顺序与在字典中添加的键值对的顺序一致. from coll ...

  2. [终极巨坑]golang+vue开发日记【一】,环境搭建篇

    写在前面 这个golang+vue大部分的内容是基于bydmm(橙卡)大佬的视频学来的,我在这里只是做一下个人开发的笔记,就是图一个乐,毕竟我只是个应届毕业生,如果真的要学请:bydmm的b站空间. ...

  3. python操作jenkins、python-jenkins api

    Jenkins作为最流行的自动化流程的核心工具,我们使用它自带的web-ui完全可以满足日常的构建及发布工作,但是如果需要和其他系统做集成就必须二次开发或者通过API方式进行交互了. Jenkins介 ...

  4. MyBatis-Plus入门Demo详解

    一.简介: 引用官方文档(本文主要参考官方文档示例): MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生 ...

  5. NETCore执行Shell修改Centos系统IP信息

    原文:NETCore执行Shell修改Centos系统IP信息 目录 shell代码 NETCore执行Shell文件 注意事项 shell代码 首先通过find命令找到/etc/sysconfig/ ...

  6. VMwarm下安装ubuntu的一些问题

    1.终端无法输入中文的原因(未实践)  原文地址 2.Windows10下VMwarm(V15.5)和ubuntu14.04实现复制文件(已经实践)  转载路径

  7. 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范

    1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...

  8. N-gram理解

    如何来理解这个概率呢? p( i love you) 如果是 =p(i)p(love)p(you) 就是只考虑单词出现的概率本身. 如果是  =p(i)p(love|i)p(you|love)  就是 ...

  9. sql语句技巧

    应用场景:当sql 语句中where后面的条件字段为空的时候,条件不存在 eg:根据传入的参数,从student表中查询数据,参数包含姓名(name 必有),年龄(age 不一定有),性别(gende ...

  10. Content-Type属性的取值和作用

    1.Content-Type 的值类型: 1.1 application/json:消息主体是序列化后的 JSON 字符串 1.2 application/x-www-form-urlencoded: ...