该示例将通过配置文件的方式去初始化 C3P0 的 ComboPooledDataSource 数据源,然后从数据源中获取一个连接,使用该连接获取 MySQL 数据库的当前时间戳。
JDK版本:1.8
MySQL版本:5.7.*
由于本项目采用 Maven 管理依赖,所以直接在 pom.xml 文件中添加如下依赖:
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- 数据库驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
直接贴代码,不理解的地方查看注释。
在项目的 resouces 目录创建 c3p0-config.xml 配置文件(注意:配置文件名称必须为 c3p0-config.xml),内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <c3p0-config> <!-- 命名的数据源配置 --> <named-config name="myDbResource"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false</property> <property name="user">root</property> <property name="password">aaaaaa</property> </named-config> </c3p0-config>
package com.hxstrive.jdbc_pool.c3p0; import com.mchange.v2.c3p0.ComboPooledDataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 通过配置文件配置 C3P0 命名数据源 * @author hxstrive.com */ public class C3p0ForCfgFile2 { // 使用命名配置 public static ComboPooledDataSource dataSource = new ComboPooledDataSource("myDbResource"); public static void main(String[] args) throws Exception { Connection connection = null; PreparedStatement ps = null; ResultSet rs = null; try { // 获取连接 connection = dataSource.getConnection(); // 查询数据库当前时间戳 ps = connection.prepareStatement("select CURRENT_TIMESTAMP() as ct"); rs = ps.executeQuery(); if(rs.next()) { System.out.println(rs.getTimestamp("ct")); } } catch (Exception e) { e.printStackTrace(); } finally { // 释放资源 if(null != rs) { rs.close(); } if(null != ps) { ps.close(); } if(null != connection) { connection.close(); } } } }
运行代码输出如下:
2023-07-04 12:57:49.0