zoukankan      html  css  js  c++  java
  • DBCP连接池配置(DBCPUtils.java)

    配置文件 db_dbcp.properites

    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/db?useSSL=true
    username=root
    password=123456

    DBCP连接池工具类 DBCPUtils.java

    package top.try51.utils;
    
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
    import org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory;
    
    public class DBCPUtils {
        
        // 加载名称为mysqlConn 的配置(src下放置 db_dbcp.properties 配置文件)
        private static BasicDataSource ds = null;
    
        /**
         * 定义一个ThreadLocal,绑定Connection,每个线程对应一个Connection,执行事务使用
         */
        private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();  
        
        static {
            Properties props = new Properties();
            try {
                // 1.加载Properties文件输入流
                InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db_dbcp.properites");
                // 2.加载载配置
                props.load(is);
                is.close();
                // 3. 创建数据源
                ds = BasicDataSourceFactory.createDataSource(props);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 
         * @return BasicDataSource
         */
        public static DataSource getDataSource() {
            return ds;
        }
    
        /**
         * 
         * @return 由BasicDataSource创建的 Connection
         */
        public static Connection getConnection() {
            try {
                return ds.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        
        /**
         * 
         * @return 获取当前线程绑定的Connection
         * @throws SQLException
         */
        public static Connection getTranConnection() throws SQLException{
            //得到ThreadLocal中的connection  
            Connection conn = tl.get();  
            //判断conn是否为空,如果不为空,则说明事务已经开启  
            if(conn == null){
                conn = getConnection(); 
                //把当前开启的事务放入ThreadLocal中  
                tl.set(conn);  
            }
            return conn;
        }
        
        
        /**
         * 开启事务,如果当前线程中没有Connection,则创建该线程对应的一个Connection
         * @throws SQLException
         */
        public static void beginTran() throws SQLException {
            //设置事务提交为手动  
            getTranConnection().setAutoCommit(false); 
        }
        
        
        
        
        /**
         * 提交事务
         * @throws SQLException
         */
        public static void commit() throws SQLException {  
            //得到ThreadLocal中的connection  
            Connection conn = getTranConnection();  
            //判断conn是否为空,如果为空,则说明没有开启事务  
            if(conn != null){  
                 //如果conn不为空,提交事务  
                conn.commit();  
                //事务提交后,关闭连接  
                conn.close();  
                //将连接移出ThreadLocal  
                tl.remove();  
            }
        }  
        
        /**
         * 回滚事务  
         * @throws SQLException
         */
        public static void rollback() throws SQLException {  
            //得到ThreadLocal中的connection  
            Connection conn = getTranConnection();  
            //判断conn是否为空,如果为空,则说明没有开启事务,也就不能回滚事务  
            if(conn != null){  
                 //事务回滚  
                conn.rollback();  
                //事务回滚后,关闭连接  
                conn.close();  
                //将连接移出ThreadLocal  
                tl.remove();  
            }
        }  
      
    }

     

  • 相关阅读:
    [剑指 Offer 11. 旋转数组的最小数字]
    进程描述符(PCB)
    [剑指 Offer 57. 和为s的两个数字]
    Linux netstat命令
    kafka2.3.X配置文件
    docker
    shell操作mysql数据库
    Linux文件查找之find命令
    sed 切割日志文件
    Linux文本处理之awk
  • 原文地址:https://www.cnblogs.com/lztkdr/p/DBCPUtils.html
Copyright © 2011-2022 走看看