zoukankan      html  css  js  c++  java
  • druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法

    方法改进前:
    @Test
    public void test01() throws Exception{
    InputStream is = Demo.class.getClassLoader().getResourceAsStream("druid.properties");
    //创建配置文件对象
    Properties properties = new Properties();
    properties.load(is);
    //创建连接池对象
    //druid 提供了一个工具类对象
    DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
    //获取连接
    Connection connection = dataSource.getConnection();
    System.out.println(connection);
    //打印连接池
    System.out.println(dataSource);
    //归还到连接池
    connection.close();
    }


    写成工具类的写法:
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import com.alibaba.druid.support.jconsole.DruidSqlDetailFrame;

    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;

    //连接池的工具类
    public class DataSourceUtils {
    // 声明变量 static
    public static DataSource dataSource;

    // 初始化连接池(仅一次)
    static {
    // 加载 druid.properteis 使用类加载
    System.out.println(DataSourceUtils.class.getClassLoader());
    InputStream is = DataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties");

    // 创建连接池对象 使用工具类
    try {
    // 创建配置文件对象
    Properties properties = new Properties();
    // 加载io流 key = value
    properties.load(is);
    // 使用第三方连接池 druid
    dataSource = DruidDataSourceFactory.createDataSource(properties);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    // 提供获取连接池的方法
    public static DataSource getDataSource() {
    return dataSource;
    }

    // 提供获取连接的方法
    public static Connection getConnection() throws SQLException {
    return dataSource.getConnection();
    }

    // 提供关闭资源的方法【connection是归还到连接池】
    // 提供关闭资源的方法 【方法重载】3 dql
    public static void closeResource(ResultSet resultSet, Statement statement, Connection connection) {
    // 关闭结果集
    // ctrl+alt+m 将java语句抽取成方法
    closeResultSet(resultSet);
    // 关闭语句执行者
    closeStatement(statement);
    // 关闭连接
    closeConnection(connection);
    }

    // 提供关闭资源的方法 【方法重载】 2 dml
    public static void closeResource(Statement statement, Connection connection) {
    // 关闭语句执行者
    closeStatement(statement);
    // 关闭连接
    closeConnection(connection);
    }

    private static void closeConnection(Connection connection) {
    if (connection != null) {
    try {
    connection.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    private static void closeStatement(Statement statement) {
    if (statement != null) {
    try {
    statement.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    private static void closeResultSet(ResultSet resultSet) {
    if (resultSet != null) {
    try {
    resultSet.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }
  • 相关阅读:
    Stereo Matching文献笔记之(一):《Cross-Scale Cost Aggregation for Stereo Matching》读后感~
    机器视觉之 ICP算法和RANSAC算法
    基于语义约束与 Graph Cuts 的稠密三维场景 重建
    RANSAC算法详解
    三维重建技术在无人机方面的应用如何?三维重建未来的学术前景如何?
    尺度空间(Scale space)理论
    网速调控、带宽限制原理探究
    Cisco交换机IOS升级
    Nmap
    vi实用命令集
  • 原文地址:https://www.cnblogs.com/otways/p/9769271.html
Copyright © 2011-2022 走看看