C3P0工具类
来源:互联网 发布:百川考试软件怎么样 编辑:程序博客网 时间:2024/06/09 19:45
package cn.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 DataSourceUtils { private static ComboPooledDataSource ds=new ComboPooledDataSource(); private static ThreadLocal<Connection> tl=new ThreadLocal<>(); /** * 获取数据源 * @return 连接池 */ public static DataSource getDataSource(){ return ds; } /** * 从当前线程上获取连接 * @return 连接 * @throws SQLException */ public static Connection getConnection() throws SQLException{ Connection conn = tl.get(); if(conn==null){ //第一次获取 创建一个连接 和当前的线程绑定 conn=ds.getConnection(); //绑定 tl.set(conn); } return conn; } /** * 释放资源 * * @param conn * 连接 * @param st * 语句执行者 * @param rs * 结果集 */ public static void closeResource(Connection conn, Statement st, ResultSet rs) { closeResource(st, rs); closeConn(conn); } public static void closeResource(Statement st, ResultSet rs) { closeResultSet(rs); closeStatement(st); } /** * 释放连接 * * @param conn * 连接 */ public static void closeConn(Connection conn) { if (conn != null) { try { conn.close(); //和当前的线程解绑 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } /** * 释放语句执行者 * * @param st * 语句执行者 */ public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } st = null; } } /** * 释放结果集 * * @param rs * 结果集 */ public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } } /** * 开启事务 * @throws SQLException */ public static void startTransaction() throws SQLException{ //获取连接//开启事务 getConnection().setAutoCommit(false);; } /** * 事务提交 */ public static void commitAndClose(){ try { //获取连接 Connection conn = getConnection(); //提交事务 conn.commit(); //释放资源 conn.close(); //解除绑定 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } } /** * 事务回滚 */ public static void rollbackAndClose(){ try { //获取连接 Connection conn = getConnection(); //事务回滚 conn.rollback(); //释放资源 conn.close(); //解除绑定 tl.remove(); } catch (SQLException e) { e.printStackTrace(); } }}
阅读全文
0 0
- C3P0工具类
- C3p0工具类封装
- c3p0数据库连接池工具类
- C3P0访问数据库工具类
- c3p0工具jdbcutils工具类模板
- 连接池-C3P0Utils工具类(c3p0)
- JdbcUtils工具类(c3p0+DbUtils优化)
- JDBC工具类使用C3P0连接池
- 02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写
- 使用 c3p0 连接池 改造 jdbcutils工具类
- C3P0组件+DbUtils组件实现一个JdbcUtils工具类
- ThreadLocal解决事务线程安全问题(c3p0数据库连接池工具类)
- 同过使用C3P0建立的对mysql数据库CRUD操作的工具类
- JDBC模拟连接池、C3P0获取链接和最终的JdbcUtils工具类的版本
- 【疑问1】java程序中JDBC工具类(采用c3p0配置文件)中的疑问?适合初学者
- 关于c3p0连接池的一个工具
- 工具 —— c3p0 更新数据模板
- C3P0
- ApiDemos(2)首页
- 关于《机器学习实战》中创建决策树的核心代码分析
- codeforces 869B The Eternal Immortality
- Using table loop for filter
- Unity-ScrollRect-循环播放图片(确实没有转载是真的)
- C3P0工具类
- 设计模式之工厂模式
- Hexo 阅读量 api.leancloud.cn 解析失败
- 设计模式之单例模式
- Linux基础——linux和gcc的介绍
- 为什么要进行日志测试和如何进行日志测试?
- 【深度学习】Attention Model详解
- 静态链表 C++
- ST7735学习