首页 > 其他分享 >jdbc+Druid工具类

jdbc+Druid工具类

时间:2023-02-01 21:13:06浏览次数:35  
标签:jdbc JDBCUtilsByDruid Druid druid connection static 工具 null public

本文主要讲述使用druid连接池,将jdbc封装成工具类

一. 连接池

vip

 

 二. 使用druid连接池

  在jdbc工具类的基础上,使用druid连接池,增加连接数量。

  hsp老师写的方式:

/**
 * hsp老师jdbcDruidUtils工具类的创建
 */
public class JDBCUtilsByDruid {
    private static Connection connection;

    static {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src\\druid.properties"));
            DataSource druid = DruidDataSourceFactory.createDataSource(properties);
            connection = druid.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        return connection;
    }

    public static boolean Close(ResultSet resultSet, Statement statement,Connection connection){
        try {
            if(resultSet != null){
                resultSet.close();
            }
            if(statement != null){
                statement.close();
            }
            if(connection != null){
                connection.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException();
        }
        return true;
    }
}

  在 JDBCUtilsByDruid类中,将connection作为静态成员变量。

  测试连接:

public class TestConnection {
    private Connection connection;

    @Test
    public void test01() throws Exception{
        connection = JDBCUtilsByDruid.getConnection();
        System.out.println(connection);
        JDBCUtilsByDruid.Close(null,null,connection);

        connection = JDBCUtilsByDruid.getConnection();
        System.out.println(connection);
        JDBCUtilsByDruid.Close(null,null,connection);
    }
}

  运行结果如下:

二月 01, 2023 7:49:57 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@49e5f737
closed-conn-1550261631

  原因分析如下:

  在JDBCUtilsByDruid 类中,connection作为静态成员变量使用,static静态代码块随着类的加载而加载,为connection赋值,

  在test01()中,第一次关闭了connection,则JDBCUtilsByDruid 类中静态变量connection被关闭了,无法再次连接到数据库了,

  由此得出,将connection作为工具类的静态成员变量,并没有体现出数据连接池的特点。

  我自己写的改进方式:

public class JDBCUtilsByDruid {
    private static DataSource druid;

    static {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src\\druid.properties"));
            druid = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = druid.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    @SuppressWarnings({"all"})
    public static boolean Close(ResultSet resultSet, Statement statement,Connection connection){
        try {
            if(resultSet != null){
                resultSet.close();
            }
            if(statement != null){
                statement.close();
            }
            if(connection != null){
                connection.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException();
        }
        return true;
    }
}

  将数据池 druid作为 JDBCUtilsByDruid 的静态成员变量

  测试连接:

public class TestConnection {
    private Connection connection;

    @Test
    public void test01() throws Exception{
        connection = JDBCUtilsByDruid.getConnection();
        System.out.println(connection);
        JDBCUtilsByDruid.Close(null,null,connection);

        connection = JDBCUtilsByDruid.getConnection();
        System.out.println(connection);
        JDBCUtilsByDruid.Close(null,null,connection);
    }
}

  运行结果如下:

二月 01, 2023 8:51:32 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@ed7f8b4
com.mysql.cj.jdbc.ConnectionImpl@ed7f8b4

  再次使用连接时,仍然能保持连接。

三. 结论

  在使用druid连接池封装jdbc工具类时,应该让数据连接池druid作为静态变量,而不是connection连接。

 

标签:jdbc,JDBCUtilsByDruid,Druid,druid,connection,static,工具,null,public
From: https://www.cnblogs.com/zwgitOne123/p/17084128.html

相关文章

  • 开发用工具类2.0:无侵入式的树形状工具类TreeUtils
    packagecn.jow.util;importjava.util.*;importjava.util.function.Function;importjava.util.stream.Collectors;/***无侵入方式处理对象集合,树形状结构数......
  • Watt Toolkit v2.8.6 多功能游戏工具箱
    WattToolkitv2.8.6多功能游戏工具箱WattToolkit工具箱能够让Steam平台的玩家们享受更加出色的游戏体验,工具箱包含多种实用的功能,支持快速切换登录账号,玩家还可以通......
  • 分享两个好用的XSS漏扫工具(工具)
    =================免责声明:希望大家以遵守《网络安全法》相关法律,本团队发表此文章仅用于研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本团队无关。=======......
  • Java两大工具库:Commons和Guava(4)
    您好,我是湘王,这是我的51CTO博客。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!在Nginx中提到过通过限流算法实现对后端......
  • Java两大工具库:Commons和Guava(4)
    您好,我是湘王,这是我的博客园。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!   在Nginx中提到过通过限流算法......
  • 接口测试|Fiddler界面工具栏介绍(一)
    fiddler界面工具栏介绍(1)WinConfig:windows使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在fiddler中点击WinConfig按钮可以解除这个诅咒,这个与菜单......
  • 接口测试|Fiddler界面工具栏介绍(二)
    Fiddler界面工具栏介绍上篇文章介绍了顶部工具栏,本篇文章我们介绍底部状态栏Fiddler底端状态栏(1)黑色(控制台):可以在里面输入命令行,如输入help回车之后,在浏览器打开使用说明(2)C......
  • 接口测试|Fiddler界面工具栏介绍(三)
    Fiddler界面工具栏介绍前两篇文章我们分别介绍了顶部工具栏,底部状态栏,本篇文章我们介绍右侧高级工具栏。右侧高级工具栏(1)GetStarted:主页面(2)Statistics:请求统计视图,用来查看......
  • 软件测试常用的工具都有哪些-测试常用工具
     一、一个从事软件测试行业十年的老司机列出以下与软件测试相关的工具:1.操作系统:Linux:vmware、xshell、xftp、ssh2.数据库:主流是以下三种数据库,尤其是MySQL以及ora......
  • LocalDateTime时间工具之“2023-01-18T23:59:59.999999999”转“yyyy-MM-dd HH:mm:ss
    LocalDateTime时间工具之“2023-01-18T23:59:59.999999999”转“yyyy-MM-ddHH:mm:ss”代码LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:m......