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();
    }
    }
    }
    }
  • 相关阅读:
    Java Mail学习整理
    @RequestBody, @ResponseBody 注解详解(转)
    @RequestMapping 用法详解之地址映射(转)
    理解static关键字
    ClassLoader如何加载class
    请说出作用域public,private,protected,以及不写时的区别
    分页语句-取出sql表中第31到40的记录(以自动增长ID为主键)
    Java构造器和方法的区别
    8月收到的最新更新附近的人交友系统源码,自动打招呼,自动发视频通话+自动聊天多功能机器人交友源码
    8月新亲测完美短视频点赞系统支持抖音+快手+刷宝+微视等所有主流短视频点赞/关注/评论系统源码
  • 原文地址:https://www.cnblogs.com/otways/p/9769271.html
Copyright © 2011-2022 走看看