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



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

这里获得数据源使用的方法是: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);

//结果是:[email protected]

}

}

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

当通过设置配置文件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;

}

}

}

时间: 2024-09-08 06:35:13

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

spring项目篇12---网上商城之配置以及工具类的编写

这个项目用到jdbc技术,研究了一下,为了学习一下,对于执行sql语句,自己进行封装工具类来进行处理,这样便于进一步理解. 首先我们来看一下搭建的基本项目结构 我们接下来看一下相关的配置信息: 首先看一下web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="

Java操作属性文件之工具类

最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Propertie

【原创】POI操作Excel导入导出工具类ExcelUtil

关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.ThreadLocalMap以当前ThreadLocal为key进行存储,设置一次变量,则其他线程也会有上次数据的残留,因此在addMergeArea方法中进行清空的操作.为了保证原子性, 采用ReentrantLock确保一次只有一个线程可以进行添加合并数据的操作. 线程安全性从以上两个方面保证. 水

配置简单功能强大的excel工具类搞定excel导入导出工具类(一)

对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象. 请看一下这个类都有哪些功能:????? 1.实体属性配置了注解就能导出到excel中,每个属性都对应一列.????? 2.列名称可以通过注解配置.????? 3.导出到哪一列可以通过注解配置.????? 4.鼠标移动到该列时提示信息可以通过注解配置.????? 5.用注解设置只能下拉选择不能随意填写功能.???? ? 6.用注解设置

JDBC实现用于操作数据库Mysql的工具类JDBCTools

下面用一个统一的工具类封装一套用于数据库的JDBC操作:包括 1)获取数据库链接资源  2)释放数据库链接资源,包括Connection,Statement,PreparedStatement,ResultSet等 3)数据库的更新操作,包括插入,删除,修改  4)数据库的查询操作 首先是1)获取数据库链接资源 /** * 获取数据库链接的静态方法 这样子就保证了只加载一次文件的操作 * @return * @throws Exception */ public static Connectio

hibernate.cfg.xml配置(Oracle+c3p0)

说明:数据库:Oracle10g:连接池:c3p0 结构: 一.配置hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforg

07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao

 1  创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyauto_increment, username varchar(20), password varchar(20) ); 2  添加依赖的jar包 c3p0-0.9.1.2.jar mysql-connection-java-5.0.8-bin.jar commons-beanutils-1.8.0.j

[转]c3p0学习-JdbcUtil工具类

原文:https://www.cnblogs.com/jonny-xu/p/6374163.html 一.需要jar包: c3p0-0.9.1.2.jar mysql-connector-java-5.1.20-bin.jar 二.Java代码: package com.javaweb.jdbc; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mc

Java数组操作利器:Arrays工具类

java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 典型用法:List<String> stooges = Arr