jdbc连接池c3p0封装好的工具类

package cn.wyf.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();
        }
    }

}
//c3p0 用c3p0要有一个xml配置文件

package cn.wyf.utils;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

/*
 * 使用DBCP 实现数据可连接池
 * 连接池的配置
 * 四个基本项
 * 其它配置  自定义
 * */
public class JDBCUtilsPool {
//  1创建 BasicDataSource  对象
       private static BasicDataSource  datas=new BasicDataSource();
   static{
       
        //  2 连接数据库的4个基本信息
        datas.setDriverClassName("com.mysql.jdbc.Driver");
        datas.setUrl("jdbc:mysql://localhost:3306/gl");
        datas.setUsername("root");
        datas.setPassword("root");
        
        //3 连接池  连接数量的配置  
                datas.setInitialSize(20);//初始化连接  20
                datas.setMaxActive(30);
                datas.setMaxIdle(5);//最大空闲数
                datas.setMinIdle(1);
    //4 定义静态方法  返回 BasicDataSource类的对象
                
   }
   public static DataSource getDataSource(){
        return  datas;
    }
}

 

posted @ 2019-03-11 08:43  forevedebug  阅读(383)  评论(0编辑  收藏  举报