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

    }

  • 相关阅读:
    swift学习笔记之-析构过程
    swift学习笔记之-错误处理
    swift学习笔记之-类型转换
    swift学习笔记之-构造过程
    day43 数据库学习egon的博客 约束
    day43 数据库知识欠缺的
    day41 python【事物 】【数据库锁】
    day40 python MySQL【四】 之 【索引】【视图】【触发器】【存储过程】【函数】
    day41 mysql 学习 练习题 重要*****
    day39 python 学习 数据库学习 五个约束,数据库设计(一对一,一对多等等)
  • 原文地址:https://www.cnblogs.com/lijun6/p/10498860.html
Copyright © 2020-2023  润新知