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();
    }
    }
    }
    }
  • 相关阅读:
    C#中怎样将数组的顺序打乱随机排序
    C#中怎样获取System.Drawing.Color的所有颜色对象并存到数组中
    ZedGraph怎样实现将图形右键菜单的打印和页面设置合并为打印的二级子菜单
    C#中怎样在ToolStripMenuItem下再添加子级菜单
    Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)
    AndroidStudio下载安装教程(图文教程)
    Dubbo环境搭建-管理控制台dubbo-admin实现服务监控
    前端冷知识集锦
    console.log()显示图片以及为文字加样式
    vue数据请求显示loading图
  • 原文地址:https://www.cnblogs.com/otways/p/9769271.html
Copyright © 2011-2022 走看看