JdbcUtils.java

 import java.sql.Connection;
import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 依赖:
* + c3p0-config.xml
* + c3p0-0.9.2-pre1.jar
* + mchange-commons-0.2.jar
* 版本1.3
* 更新日期:2015/2/23
* @author Administrator
*
*/
public class JdbcUtils {
//ComboPooledDataSource(String configName)的参数configName指的是配置文件c3p0-config.xml中的 <named-config name="mysql">...</named-config>
//如果没有输入configName参数,那么就采用默认的<default-config>...</defalut-config>
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
private static Connection con = null;
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
/**
* 获取连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
con = tl.get();
if(con != null){return con;}
return dataSource.getConnection();
}
/**
* 获取连接池对象
* @return
*/
public static DataSource getDataSource(){
return dataSource;
}
/**
* 开启事务
* @throws SQLException
*/
public static void beginTransaction() throws SQLException{
con = tl.get();
if(con != null){throw new RuntimeException("事务已经开启!不能重复开启!");}
con = getConnection();
con.setAutoCommit(false);
tl.set(con);
}
/**
* 提交事务
* @throws SQLException
*/
public static void commitTransaction() throws SQLException{
con = tl.get();
if(con == null){throw new RuntimeException("事务还没开启!不能提交!");}
con.commit();
con.close();//归还连接对象到连接池
tl.remove();//移除连接对象con。那么tl.get() == null
}
/**
* 回滚事务
* @throws SQLException
*/
public static void rollbackTransaction() throws SQLException{
con = tl.get();
if(con == null){throw new RuntimeException("事务还没开启!不能回滚!");}
con.rollback();
con.close();
tl.remove();
}
/**
* 关闭 非事务专用的连接
* @param connection
* @throws SQLException
*/
public static void releaseConnection(Connection connection) throws SQLException{
con = tl.get();//获取事务专用连接
if(con == null){connection.close();}
if(con != connection){connection.close();}
}
}

c30p-config.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
<!-- c3p0有两种配置方式,一种是默认的default-config,一种是按名字区分:named-config需要添加一个属性值name -->
<default-config>
<property name="jdbcUrl">jdbc:oracle:thin:username/password@amrood:1521:EMP</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
<property name="user">root</property>
<property name="password"></property> <property name="acquireIncrement">3</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">10</property>
</default-config>
<named-config name="mysql">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db_user</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password"></property> <property name="acquireIncrement">3</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">10</property>
</named-config>
</c3p0-config>

在这个c3p0-config.xml中配置了两个数据库,如果我要使用oracle的数据库那么我在JdbcUtils类中的ComboPoolDataSource()不传入参数即可,也就是采用默认的方式。

而我在c3p0-config.xml中就是把oracle配成了默认的方式。如果我要不使用默认方式,那么我只要在ComboPoolDataSource(String configName)中指定相应的名称就可以了,如上面的代码。

JDBCUtils工具类的更多相关文章

  1. JavaWeb基础之JdbcUtils工具类final

    JdbcUtils工具类3.0最终版,添加了事务相关功能和释放链接.最终版本可以直接打成jar包,在后面的基本项目都会使用该工具类 1. JdbcUtils代码 /** * 最终版 * @author ...

  2. JavaWeb基础之JdbcUtils工具类1.0

    2016年12月20日,第一次学习JDBC.看的是传智播客崔希凡老师的视频,东北口音很是风趣幽默,技术之牛让人膜拜.2017年9月21日,再次重温web知识,分享JdbcUtils工具类,用以接下来的 ...

  3. Druid 连接池 JDBCUtils 工具类的使用

    Druid工具介绍 它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. 支持所有JDBC兼容的数据库,包括Oracle.MySQL. ...

  4. 创建JDBCUtils工具类

    JDBCUtils工具类 私有化构造函数,外界无法直接创建对象 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接 提供公共的,静态的,close方法,用来释放资源 pac ...

  5. 记一次关于JDBCUtils工具类的编写

    jdbc.properties数据库配置的属性文件内容如下 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/xxxx ...

  6. 【JDBC】学习路径5-提取JDBCUtils工具类

    回顾我们上面几节的内容,我们发现重复代码非常多,比如注册驱动.连接.关闭close()等代码,非常繁杂. 于是我们将这些重复的大段代码进行包装.提取成JDBCUtils工具类. 第一章:提取注册连接模 ...

  7. JavaWeb基础之JdbcUtils工具类2.0

    使用c3p0连接池来改版JdbcUtils工具 1. 使用c3p0连接池获取连接,使代码更加简单 /** * 使用c3p0连接池做小工具 * JdbcUtils v2.0 * @author hui. ...

  8. 基于durid的JDBCUtils工具类

    1.JDBCUtils类 package com.alphajuns.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; impo ...

  9. JDBCUtils工具类(转)

    JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource ...

随机推荐

  1. hdu 2821 Pusher (dfs)

    Pusher Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Others)Total Subm ...

  2. 「JOISC 2015 Day 1」卡片占卜

    题目描述 K 理事长是占卜好手,他精通各种形式的占卜.今天,他要用正面写着 I ,背面写着 O 的卡片占卜一下日本 IOI 国家队的选手选择情况. 占卜的方法如下: 首先,选取五个正整数 A,B,C, ...

  3. 更改Debian的console分辨率

    1.通过apt-get install hwinfo来安装 2.通过命令hwinfo --framebuffer来获取 eric@debian:~$ sudo sudo hwinfo --frameb ...

  4. Spring----01. 入门知识,IoC/DI

    1.spring两个最基本概念:依赖注入DI.面向切面AOP 2.spring通过上下文Application Context装配bean,实现方式的区别是如何加载它们的配置信息, ClassPath ...

  5. Linux忘记Mysql原来root的密码

    Linux忘记Mysql原来root的密码 1.首先需要有linux操作系统root的权限 2.ps aux | grep mysql (或者 systemctl status mysql) 发现my ...

  6. Linux Mint---shutter截图软件

    shutter 可以说是linux下最好的截图软件了,默认安装好后不能编辑截图,解决方法如下: 1-关闭shutter 2-sudo apt-get install shutter libgoo-ca ...

  7. 从串口驱动的移植看linux2.6内核中的驱动模型 platform device & platform driver【转】

    转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ...

  8. RobotFramework自动化1-环境搭建【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/robotframework/ 前言 Robot Framework是一款python编 ...

  9. centos7使用tomcat部署javaweb项目

    1.下载二进制安装包 tomcat下载地址 2.下载jdk和配置环境变量 这里就不再多描述不清楚,可以       参考 我的yum安装的jdk 3.在centos7下安装 tomcat #切换到/u ...

  10. javascript原型理解一种

    http://www.jianshu.com/p/15ac7393bc1f 这个系列值得好好学习的.. // 声明构造函数 function Person(name, age) { this.name ...