zoukankan      html  css  js  c++  java
  • c3p0封装

    在今天下午授课过程中 在处理数据库事物时需要同一个Connection  但是dbcp无法获得  单独工具也显得繁琐,改进成c3p0工具类如下

    package 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 DataSource dataSource = new ComboPooledDataSource();

    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

    // 直接可以获取一个连接池
    public static DataSource getDataSource() {
    return dataSource;
    }

    public static Connection getConnection() throws SQLException{
    return dataSource.getConnection();
    }

    // 获取连接对象
    public static Connection getCurrentConnection() throws SQLException {

    Connection con = tl.get();
    if (con == null) {
    con = dataSource.getConnection();
    tl.set(con);
    }
    return con;
    }

    // 开启事务
    public static void startTransaction() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.setAutoCommit(false);
    }
    }

    // 事务回滚
    public static void rollback() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.rollback();
    }
    }

    // 提交并且 关闭资源及从ThreadLocall中释放
    public static void commitAndRelease() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.commit(); // 事务提交
    con.close();// 关闭资源
    tl.remove();// 从线程绑定中移除
    }
    }

    // 关闭资源方法
    public static void closeConnection() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.close();
    }
    }

    public static void closeStatement(Statement st) throws SQLException {
    if (st != null) {
    st.close();
    }
    }

    public static void closeResultSet(ResultSet rs) throws SQLException {
    if (rs != null) {
    rs.close();
    }
    }

    }

  • 相关阅读:
    javascript 作用域、预解析、变量提升
    用最简洁代码实现indexOf方法
    JavaScript 中的 RegExp 对象
    不能使用任何循环控制语句和迭代器的情况下实现一个0到1000的数组赋值
    IDEA搭建SSM框架教程 从零开始 SSM+Maven框架搭建教程
    Redis缓存 集成SSM框架
    JavaWeb拦截器
    log4j.properties配置文件
    C#WinForm,TCP调试工具
    C#如何实现控件移动拖动
  • 原文地址:https://www.cnblogs.com/lijun6/p/10498860.html
Copyright © 2011-2022 走看看