package ${enclosing_package};

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 ${primary_type_name} { // 1 获得Connection ----- 从连接池中获取
private static DataSource dataSource = new ComboPooledDataSource(); // 2 创建ThreadLocal 存储的类型是Connection
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>(); // 3 直接可以获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}
// 4 直接获取一个连接
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
} // 5 获取绑定到ThreadLocal上的连接对象
public static Connection getCurrentConnection() throws SQLException {
//从ThreadLocal寻找 当前线程是否有对应Connection
Connection con = tl.get();
if (con == null) {
//获得新的connection
con = dataSource.getConnection();
//将conn资源绑定到ThreadLocal(map)上
tl.set(con);
}
return con;
} // 6 开启事务
public static void startTransaction() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.setAutoCommit(false);
}
} // 7 事务回滚
public static void rollback() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.rollback();
}
} // 8 提交并且 关闭资源及从ThreadLocall中释放
public static void commitAndRelease() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.commit(); // 事务提交
con.close();// 关闭资源
tl.remove();// 从线程绑定中移除
}
} // 9 关闭资源方法
public static void close(ResultSet rs,Statement st,Connection con) throws SQLException {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
}
}

004-C3P0连接池工具类模板的更多相关文章

  1. C3P0连接池工具类实现步骤及方法

    C3P0连接池的工具类 使用C3P0获得连接对象连接池有一个规范接口 javax.sal.DataSourse 接口定义了一个从连接池中获得连接的方法getConnection(); 步骤导入jar包 ...

  2. C3P0连接池工具类使用

    c3p0的基本连接配置文件 c3p0-config.xml <c3p0-config> <default-config> <property name="dri ...

  3. DBCP连接池工具类模板

    package ${enclosing_package}; import java.io.InputStream; import java.sql.Connection; import java.sq ...

  4. Druid连接池工具类

    package cn.zmh.PingCe; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSo ...

  5. Oracle连接池工具类OJDBCUtils

    Oraclejdbc.properties driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127.0.0. ...

  6. jedis 连接池工具类

    maven <properties> <jedis.version>3.0.1</jedis.version> <junit.verion>4.12&l ...

  7. C3P0连接池配置(C3P0Utils.java)

    配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...

  8. JDBC 工具类模板c3p0

    JDBC 工具类模板 package com.itheima.sh.utils; import com.mchange.v2.c3p0.ComboPooledDataSource; import ja ...

  9. 在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用

    首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...

随机推荐

  1. easyui datagrid单元格实现溢出文本显示省略号的效果。

    Css .datagrid-btable .datagrid-cell{padding:6px 4px;overflow: hidden;text-overflow:ellipsis;white-sp ...

  2. CodeForces 834D The Bakery(线段树优化DP)

    Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought required ingredient ...

  3. 简单介绍Java的静态分派和动态分派

    最近复习JVM的知识,对于静态分派和动态分派的理解有点混乱,于是自己尝试写写代码,在分析中巩固知识. 有如下一段代码,请问每一段分别输出什么? package com.khlin.my.test; c ...

  4. duilib入门简明教程 -- 完整的自绘标题栏(8)

       看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~     看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~       duil ...

  5. TSQL--NESTED LOOPS JOIN

    算法:遍历外表,将遍历出结果依次在内标中匹配查找 --如果内表无索引,则扫描内表 foreach(row r1 in outerTable) { foreach(row r2 in innerTabl ...

  6. .Net Core使用OpenXML导出,导入Excel

    导出Excel是程序很常用到的功能,.Net Core可以借助Open-XML-SDK来导出Excel. Open-XML-SDK open-xml-sdk是是微软开源的项目.Open XML SDK ...

  7. Gamma Correction of OIIO

    \apiitem{"oiio:ColorSpace" : string}   The name of the color space of the color channels. ...

  8. Android学习之 adb被占用解决办法

    1.adb被占用解决办法 方法一:(1)查看5037端口哪个进程在用          netstat -a -o 5037 (2)查看上面进程是哪个执行文件在占用          tasklist ...

  9. 爬虫开发3.requests模块

    requests模块 - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能 ...

  10. javascript点击兼容所有浏览器封装

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...