C3P0 配置文件命名数据源

该示例将通过配置文件的方式去初始化 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&amp;characterEncoding=utf8&amp;useSSL=false</property>
       <property name="user">root</property>
       <property name="password">aaaaaa</property>
   </named-config>
</c3p0-config>

Java代码

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
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号