02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:  c3p0也是一个开源jdbc连接池,我们熟悉的Hibernate和Spring框架使用的都是该数据源。   这里获得数据源使用的方法是:ComboPooledDataSource 它提供的构造方法有: ComboPooledDataSource()             ComboPooledDa


c3p0也是一个开源jdbc连接池,我们熟悉的HibernateSpring框架使用的都是该数据源。

 

这里获得数据源使用的方法是:ComboPooledDataSource

它提供的构造方法有:

ComboPooledDataSource()
           

ComboPooledDataSource(boolean autoregister)
           

ComboPooledDataSource(java.lang.String configName)

通过第三个构造方法读取配置文件,它的配置文件是一个xml文件,也可以是一个properties文件。

 

c3po中的ComboPooledDataSource提供了如下方法:

setDriverClass: 设置驱动使用的是

setJdbcUrl:设置url

setInitialPoolSize(int initialPoolSize)

setPassword:设置密码

setUser:设置用户名

 

 

不适用配置文件的使用方法:

package cn.toto.utils;

 

import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import com.mchange.v2.c3p0.ComboPooledDataSource;

 

public class JdbcUtils {

    private static DataSource ds;

   

    static {

       try {

           //初始化c3p0连接池

           ComboPooledDataSource cpds = new ComboPooledDataSource();

           cpds.setDriverClass("com.mysql.jdbc.Driver");

           cpds.setJdbcUrl("jdbc:mysql://localhost:3306/day14");

           cpds.setUser("root");

           cpds.setPassword("123456");

          

           cpds.setInitialPoolSize(5);

           cpds.setMaxPoolSize(20);

          

           ds =cpds;

       } catch (PropertyVetoException e) {

           throw new ExceptionInInitializerError("属性不匹配的错误");

       }

    }

   

    //获取与指定数据的连接

    public static DataSource getSource(){

       return ds;

    }

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       //从连接池返回一个连接

       return ds.getConnection();

    }

    //释放资源

    public static void release(ResultSet rs,Statement stmt,Connection conn) {

       if(rs!=null){

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt=null;

       }

       if(conn!=null){

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

 

 

用于测试的主方法:

package cn.toto.demo;

 

import java.sql.Connection;

import java.sql.SQLException;

 

import cn.toto.utils.JdbcUtils;

 

public class Demo {

 

    public static void main(String[] args) throws SQLException {

       Connection conn = JdbcUtils.getConnection();

       System.out.println(conn);

//结果是:com.mchange.v2.c3p0.impl.NewProxyConnection@10bbf9e

    }

 

}

 

通过配置文件的方式读取文件。

当通过设置配置文件xml时它可以自动查找,不用通过类加载的方式了。只要它的文件路径是在classloader(类路径也可以说是classes下面)的路径下面。(在官方文档中可以找到配置文件)

配置文件好后的文件是:

<?xml version="1.0"encoding="UTF-8"?>

<c3p0-config>

    <default-config>

       <property name="automaticTestTable">con_test</property>

       <property name="checkoutTimeout">30000</property>

       <property name="idleConnectionTestPeriod">30</property>

       <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>

       <user-overrides user="test-user">

           <property name="maxPoolSize">10</property>

           <property name="minPoolSize">1</property>

           <property name="maxStatements">0</property>

       </user-overrides>

    </default-config>

    <named-config name="toto">

       <property name="initialPoolSize">5</property>

       <property name="maxPoolSize">20</property>

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>

       <property name="user">root</property>

       <property name="password">123456</property>

    </named-config>

</c3p0-config>

 

 

这时写好的JdbcUtils是:

package cn.toto.utils;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import com.mchange.v2.c3p0.ComboPooledDataSource;

 

public class JdbcUtils {

    private static DataSourceds;

   

    static {

       //ds = new ComboPooledDataSource();//默认的缺省的配置

       ds = new ComboPooledDataSource("toto");//配置文件中设置的内容不用写其他的是因为它可以自动查找classloader下的c3p0-config.xml文件(要注意的是文件的名称必须是c3p0-config.xml)如果文件的名称不是这个,将出现错误。

    }

   

    //获取与指定数据的连接

    public static DataSourcegetSource(){

       return ds;

    }

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       //从连接池返回一个连接

       return ds.getConnection();

    }

    //释放资源

    public static void release(ResultSet rs,Statement stmt,Connection conn) {

       if(rs!=null){

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt=null;

       }

       if(conn!=null){

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

 

}

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密
|
12月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
362 6
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
717 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
621 0
Vue3基础(19)___vite.config.js中配置路径别名
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
468 5
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
552 4
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
345 4
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
JSON 前端开发 JavaScript
vue.config.js配置详解
【8月更文挑战第16天】vue.config.js配置详解
821 1
vue.config.js配置详解