Druid连接池的基本配置与使用

简介: Druid连接池的基本配置与使用

Druid简介


Druid是阿里巴巴的开源连接池组件,是世界上最好的连接池之一。Druid能对数据库连接进行有效管理和重用,最大化程序执行的效率。连接池负责创建和管理连接,程序只负责取用与归还。


以下是我画的示意图:


78a6c6ab6b614606b57d25b976c72c17.jpg


下面我来给大家介绍一下Druid的基本配置与使用,需要你有JDBC基础。可以跟着敲一下体验体验。


Druid的基本配置和使用


1.创建一个普通的Java项目,导入Druid的jar包和JDBC的驱动的jar包(注意:一定不要忘了导入这两个jar包,可以手动导入到lib目录下然后导入module或者用maven导入,百度搜索Druid就能找到GitHub的页面,在里面的中文帮助里有提示)


2.然后再项目的src目录下创建一个druid-config.properties的配置文件


3.在属性配置文件中配置如下:


driverClassName=com.mysql.cj.jdbc.Driver


url=jdbc:mysql://localhost:3306/files


username=root


password=zc20020106


initialSize=10


maxActive=20


其中driverClassName指JDBC驱动的名字,url是连接字符串,username指数据库的用户名,password指数据库密码,initialSize指程序启动时默认创建的数据库连接数,maxActive表示如果连接数大于intitialSize的数后创建的最大连接数。


4.创建一个DruidSimple类来用于测试今天的案例。


然后再main方法中编写代码如下,注释里有对代码的详细解释:


package com.haiexijun.sample;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidSample {
    public static void main(String[] args) {
        //1.加载属性文件
        Properties properties=new Properties();
        //DruidSample.class.getResource("src/druid-config.properties")表示获取
        // 当前DruidSample类路径下的属性文件的路径
        String propertyFile=DruidSample.class.getResource("/druid-config.properties").getPath();
        //下面这是一个容错的考虑,因为配置文件路径可能有中文或者空格。将要它转换为utf-8,然后对decode()进行try catch
        try {
            propertyFile =new URLDecoder().decode(propertyFile,"UTF-8");
            //读取配置文件
            properties.load(new FileInputStream(propertyFile));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2.获取DataSource数据源对象(其实这里数据源可以理解为数据库),选择java.sql包下的DataSources
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
            //3.创建数据库连接,获取Connection数据库连接对象对象
            //eg:这里创建20个数据库连接为例
            for (int i = 0; i < 20; i++) {
                conn=dataSource.getConnection();
            }
            //下面的操作就和jdbc一样了
            String sql="select id from myfile";
            ps= conn.prepareStatement(sql);
            rs= ps.executeQuery();
            while (rs.next()){
                System.out.println(rs.getInt("id"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //不要忘记finally来释放资源
            //但是这里使用连接池关闭和不使用连接池关闭有所不同,
            // 使用连接池conn.close()是将连接回收到连接池中,
            // 不使用连接池conn.close()关闭则直接释放连接
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

这里创建的是20个连接,刚好达到了最大值。如果创建21个连接,那么第21个连接的操作就要等前20个连接有一个被回收后,才会被执行操作。连接池里的连接在默认的情况下是处于sleep状态。直到程序获取连接后并对他调用。连接完成调用后执行close方法,则该连接又会回到连接池中,等待被调用。


。。。。我的项目目录结构。。。。。


e753edef6b09404fae6db399b0f7d83e.png

 

这里这是一个简单的Druid连接池案例,算是入门连接池了。但Druid的功能肯定不止如此啦,还要继续学习啊。谢谢大家的关注。有什么问题评论区见。

相关文章
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
13360 2
Spring Boot 3 集成 Druid 连接池详解
|
SQL 监控 druid
强大的Druid
Druid数据库连接池介绍以及使用步骤
1448 2
|
druid Java 数据库连接
数据库连接池及Druid使用步骤
数据库连接池及Druid使用步骤
1957 2
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
16002 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
SQL 缓存 Oracle
一文教会你如何在SpringBoot项目里集成Hibernate
一文教会你如何在SpringBoot项目里集成Hibernate
1745 1
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
3991 5
|
监控 Java 数据库连接
解决Spring Boot中的数据库连接池问题
解决Spring Boot中的数据库连接池问题
|
druid Java 数据库
spring boot 整合 druid(深入浅出)
spring boot 整合 druid(深入浅出)
957 0
|
druid Java 数据库连接
【JDBC】数据库连接池:德鲁伊druid的使用
学习数据库连接池:德鲁伊druid的使用。
2196 0
【JDBC】数据库连接池:德鲁伊druid的使用