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();
    }
    }
    }
    }
  • 相关阅读:
    关于相机权限
    JDBC插入中文出现乱码问题
    记一次Java代码的部署
    Java-final关键字
    Java枚举使用详解
    临时表
    Oracle 11g 建表 表名大小写问题
    ORA-04021等待锁定对象时超时
    Oracle 查询时间差几天
    NVL()
  • 原文地址:https://www.cnblogs.com/otways/p/9769271.html
Copyright © 2011-2022 走看看