c3p0官网:https://github.com/swaldman/c3p0
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://IP:PORT/DB?useUnicode=true&characterEncoding=utf8"/> <property name="user" value="root"/> <property name="password" value="root"/> <!--连接池中初始化时建立的连接数--> <property name="initialPoolSize" value="20"/> <!--连接池中无可用连接时,一次性获取连接数--> <property name="acquireIncrement" value="5"/> <!--连接池中最大连接数--> <property name="maxPoolSize" value="100"/> <!--最大空闲时间,单位:秒,超过30秒未使用则连接设为过期,在空闲检查执行之后会被移出连接池。若为0则永不过期。Default: 0 --> <property name="maxIdleTime" value="30"/> <!--空闲连接检查时间周期,单位:秒,0为不执行检查。Default: 0 --> <property name="idleConnectionTestPeriod" value="300"/> <!-- 连接池中最少连接数,当连接数==最少连接数,即便有空闲连接,也不移出连接--> <property name="minPoolSize" value="10"/> <!-- 从连接池中获取连接的超时时间 ,单位:毫秒,超时后会报错,0为一直等待,默认为0 --> <property name="checkoutTimeout" value="1000"/> <!-- 连接池中,Statement被缓存的最大值,以便下次使用时直接取出--> <property name="maxStatements" value="2000"/> <!-- 连接池中,每一个连接缓存Statement的最大值,以便下次使用时直接取出--> <property name="maxStatementsPerConnection" value="20"/> <!--获取连接失败时,重试次数,默认值:30--> <property name="acquireRetryAttempts" value="99999"/> <!--获取连接失败,重试获取连接的时间间隔,单位:毫秒,默认值:1000--> <property name="acquireRetryDelay" value="10000"/> <!--连接关闭时,未提交的,自动提交,默认值为:false,即为回滚事务--> <property name="autoCommitOnClose" value="true"/> <!--数据库表名,通过查询(select * from 表名)测试数据库连接是否正常,已存在该表,则不能有数据,不存在该表,C3PO会建表--> <property name="automaticTestTable" value="C3P0_CONNECT_TEST"/> <!--定义一个查询SQL,用于数据库连接是否正常,如果定义了automaticTestTable属性,本属性被忽略--> <property name="preferredTestQuery" value=" select 1 from dual"/> <!--当连接被添加到连接池后,测试连接的可用性,默认值:false--> <property name="testConnectionOnCheckin" value="true"/> <!--如果设置为true,每次从池中取一个连接,将做一下测试,使用automaticTestTable 或者 preferredTestQuery,做一条查询语句.看看连接好不好用,不好用,就关闭它,重新从池中拿一个.--> <property name="testConnectionOnCheckout" value="false"/> <!--true:当获取连接出现异常时,标识连接池不可用,并不再重试连接数据库--> <!--false: 当获取连接出现异常时,下次被调用时继续获取连接--> <property name="breakAfterAcquireFailure" value="false"/> <!--连接的最长存活时间,单位:秒--> <property name="maxConnectionAge" value="3600"/> <!--连接未返回给连接池的超时时间,一般用于应用未关闭连接,长期占用时处理--> <property name="unreturnedConnectionTimeout" value="60"/> </bean>