下面将通过一个简单示例演示 C3P0 和 Spring 集成,通过 JdbcTemplate 从 MySQL 5.7.* 中获取数据库时间戳。
Spring 版本:5.3.22
MySQL 版本:5.7.*
JDK 版本:1.8.*
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.22</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.22</version>
</dependency>
<!-- 数据库驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!-- 数据库驱动 -->
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<!-- 相应驱动的jdbcUrl,你懂的 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useSSL=false" />
<!-- 数据库的用户名 -->
<property name="user" value="root" />
<!-- 数据库的密码 -->
<property name="password" value="aaaaaa" />
<property name="checkoutTimeout" value="30000" />
<property name="idleConnectionTestPeriod" value="30" />
<!-- 连接初始化时创建的连接数 -->
<property name="initialPoolSize" value="3" />
<property name="maxIdleTime" value="30" />
<!-- 连接池中拥有的最大连接数,如果获得新的连接时,连接总数已满,则不会再获取新连接,而是等待其他连接释放 -->
<property name="maxPoolSize" value="100" />
<!-- 连接池保持的最小连接数 -->
<property name="minPoolSize" value="2" />
<property name="maxStatements" value="200" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>package com.hxstrive.jdbc_pool.c3p0;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
/**
* 配置 C3P0 为 JdbcTemplate 的数据源,利用 JdbcTemplate 获取数据库当前时间戳。
* @author hxstrive.com
*/
public class C3p0Hello {
public static void main(String[] args) {
// 1.从 classpath 中加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"application-context.xml");
// 2.获取 JdbcTemplate 实例 Bean
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
System.out.println("jdbcTemplate = " + jdbcTemplate);
// 3.获取数据库当前的时间戳
Timestamp ts = jdbcTemplate.queryForObject("select CURRENT_TIMESTAMP() as ct", Timestamp.class);
System.out.println(ts);
}
}运行代码输出如下:
jdbcTemplate = org.springframework.jdbc.core.JdbcTemplate@32464a14
2023-07-04 13:13:06.0