Druid Java配置详解

Druid是一款开源的数据库连接池,采用Java语言进行开发。它具有高效、稳定和可靠的特性,广泛应用于企业级应用程序中。本文将详细介绍如何通过Java代码配置Druid连接池,并提供一些示例代码。

引入依赖

首先,我们需要在项目的pom.xml文件中添加Druid的依赖。可以通过以下方式引入Druid的最新版本:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.4</version>
</dependency>

配置Druid连接池

在Java代码中配置Druid连接池非常简单。我们需要创建一个DruidDataSource对象,并设置相关的属性。

import com.alibaba.druid.pool.DruidDataSource;

public class DataSourceConfig {
    
    public static DruidDataSource createDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        
        // 设置数据库连接URL
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        // 设置数据库用户名
        dataSource.setUsername("root");
        // 设置数据库密码
        dataSource.setPassword("password");
        // 设置数据库驱动类名
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        // 设置初始连接数
        dataSource.setInitialSize(5);
        // 设置最大连接数
        dataSource.setMaxActive(20);
        // 设置最小空闲连接数
        dataSource.setMinIdle(2);
        
        return dataSource;
    }
}

在上面的示例代码中,我们创建了一个DruidDataSource对象,并设置了数据库连接URL、用户名、密码、驱动类名、初始连接数、最大连接数和最小空闲连接数等属性。这些属性可以根据实际情况进行调整。

使用Druid连接池

一旦配置好了Druid连接池,我们就可以在代码中使用它了。下面是一个简单的示例,演示如何获取数据库连接、执行SQL查询并释放连接。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {
    
    public static void main(String[] args) {
        DruidDataSource dataSource = DataSourceConfig.createDataSource();
        
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        
        try {
            connection = dataSource.getConnection();
            statement = connection.prepareStatement("SELECT * FROM users WHERE age > ?");
            statement.setInt(1, 18);
            resultSet = statement.executeQuery();
            
            while (resultSet.next()) {
                String username = resultSet.getString("username");
                int age = resultSet.getInt("age");
                System.out.println(username + " - " + age);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

在上述示例中,我们首先获取DruidDataSource对象,然后通过getConnection()方法获取一个数据库连接。接下来,我们使用PreparedStatement对象执行查询,并将结果打印出来。最后,我们在finally块中释放资源。

性能监控和统计

Druid还提供了丰富的性能监控和统计功能。我们可以通过配置一些属性来启用这些功能。下面是一个示例代码,演示如何配置Druid连接池的性能监控和统计功能:

import com.alibaba.druid.pool.DruidDataSource;

public class DataSourceConfig {
    
    public static DruidDataSource createDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        
        // 设置数据库连接URL
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        // 设置数据库用户名
        dataSource.setUsername("root");
        // 设置数据库密码
        dataSource.setPassword("password");
        // 设置数据库驱动类名
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        // 设置初始连接数
        dataSource.setInitialSize(5);
        // 设置最大连接数
        dataSource.setMaxActive(20);
        // 设置最小空闲连接数
        dataSource.setMinIdle(2);
        
        // 启用性能监控和统计
        dataSource.setFilters("stat");
        // 设置慢SQL阈值
        dataSource.setConnectionProperties("druid.stat.slowSqlMillis=5000");
        
        return dataSource;
    }
}