一、连接池的作用:
连接池是将已经创建好的连接保存在池中,当有请求来时,直接获取连接池中的有效连接对数据库进行访问,省略了创建连接和销毁连接的过程。这样性能上得到了提高。
基本原理是这样的:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:初始化空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建预设定数目的数据库连接。
(4)存取数据。
(5)访问结束,释放对应的数据库连接(将连接放入空闲队列中,如果实际空闲连接数大于连接池最大保留连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
二、导入所需jar包 下载C3P0所需jar包点击此处
1.启动MySQL或Oracle的服务
2.导入MySQL的jar包
3.下载连个jar包:c3p0及其依赖包mchange-commons-java
目录:

三、c3p0的配置(本次使用了jdk1.8,刚开始使用jdk11,但是读不了xml)
1. 通过连接池的set方法设置(setxx,xx为配置文件的property name的任意属性名,如minPoolSize,则方法为setMinPolSize(),属性名首字母需要大写) 略
2. 通过配置文件(.xml或.properties)
配置文件c3p0-config.xml
注:.xml配置文件中的&符号需要转义成 & ;(其余符号点击该处查看)
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config> <!-- This is default config! --> <default-config> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> </default-config> <!-- This is my config for mysql--> <named-config name="mysql"> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <!-- 设置字符集和时区 --> <property name="jdbcUrl">jdbc:mysql://localhost:3306/testconn?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false</property> <property name="user">root</property> <property name="password">abc123</property> <!-- 初始化连接池中的连接数,取值应在min














