欢迎光临
我们一直在努力,专注IT互联网的资料分享

java数据库连接池配置DataSourceUtils类代码展示

package com.bigjavastore.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) {
closeResultSet(rs);
closeStatement(st);
closeConn(conn);
}

/**
* 释放连接
*
* @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{
//1.获取连接
Connection conn=getConnection();

//2.开始
conn.setAutoCommit(false);
}

/**
* 事务提交
*/
public static void commitAndClose(){
try {
//0.获取连接
Connection conn = getConnection();

//1.提交事务
conn.commit();

//2.关闭且移除
closeConn(conn);
} catch (SQLException e) {
}

}

/**
* 提交回顾
*/
public static void rollbackAndClose(){
try {
//0.获取连接
Connection conn = getConnection();

//1.事务回顾
conn.rollback();

//2.关闭且移除
closeConn(conn);
} catch (SQLException e) {
}

}
}

由于是将代码上传到网站 可能代码格式没有排版好,你可以将代码复制eclipse或myeclipse中,代码会自动对齐

本方法并不是唯一方法,可自行参考!

赞(1) 打赏
未经允许不得转载:辰熙博客 » java数据库连接池配置DataSourceUtils类代码展示
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏