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();
    }
    }

    }

  • 相关阅读:
    学习JavaDay07
    学习JavaDay05
    学习JavaDay0402
    学习JavaDay04
    学习JavaDay03
    学习JavaDay02
    学习JavaDay01
    数据库的增删改查
    关于Spring
    关于多线程Thread的简单应用
  • 原文地址:https://www.cnblogs.com/lijun6/p/10498860.html
Copyright © 2011-2022 走看看