关于数据库连接池Druid使用说明

关于数据库连接池Druid使用说明

前言

Druid是一款高性能的数据库连接池和监控工具。它提供了比其他连接池更多的监控统计信息,并且支持SQL防注入等功能。

引入依赖

在pom.xml文件中添加以下代码:

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

配置文件

在src/main/resources目录下创建druid.properties配置文件,添加以下内容:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username=root
password=root
initialSize=5
maxActive=10
minIdle=3
maxWait=60000
validationQuery=SELECT 1
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=25200000
poolPreparedStatements=false

其中:

  • driverClassName:驱动类名
  • url:数据库连接地址,改成自己数据库的地址
  • username:数据库用户名
  • password:数据库密码
  • initialSize:初始化连接数量
  • maxActive:最大连接数量
  • minIdle:最小连接数量
  • maxWait:最长等待时间
  • validationQuery:验证连接是否可用的sql语句
  • testOnBorrow、testOnReturn、testWhileIdle:设置连接是否被空闲连接回收器检查
  • timeBetweenEvictionRunsMillis:空闲连接每隔多久检查一次
  • minEvictableIdleTimeMillis:连接池中连接最小空闲时间,超过此时间连接将被销毁
  • poolPreparedStatements:是否使用preparedstatement缓存预编译语句。设置是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,例如Oracle。在mysql下建议关闭。

Java代码示例

获取连接

import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class TestDruid {
    private static DruidDataSource dataSource;

    static {
        dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        dataSource.setInitialSize(5); // 初始化连接数量
        dataSource.setMaxActive(10); // 最大连接数量
        dataSource.setMinIdle(3); // 最小连接数量
        dataSource.setMaxWait(60000); // 最长等待时间
        dataSource.setValidationQuery("SELECT 1"); // SQL检测可用性
        dataSource.setTestOnBorrow(false);
        dataSource.setTestWhileIdle(true);
        dataSource.setTimeBetweenEvictionRunsMillis(60000); // 连接检测间隔时间
        dataSource.setMinEvictableIdleTimeMillis(25200000); // 最小空闲连接时间
        dataSource.setPoolPreparedStatements(false); // 关闭PSCache

    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

}

使用Druid连接池

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

public class TestConnect {
    public static void main(String[] args) throws SQLException {
        Connection connection = TestDruid.getConnection(); // 获取连接
        String sql = "SELECT * FROM user where id=1";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            System.out.println(resultSet.getLong("id"));
            System.out.println(resultSet.getString("name"));
            System.out.println(resultSet.getInt("age"));
        }
        resultSet.close();
        preparedStatement.close();
        connection.close(); // 释放连接
    }
}

总结

上述代码示例是Druid连接池的基础使用,一般情况下可以通过基础配置和代码示例进行使用,当然也可以在此基础上根据个人需求调整一些参数,例如连接池的最大数量、最小数量、空闲连接时间,都可以在配置文件中进行设置。如果需要更详细的了解,也可以进一步查阅官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于数据库连接池Druid使用说明 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL存储函数详解

    MySQL存储函数是存储在MySQL数据库中的一段代码,用于执行特定的任务并返回结果。 它们可以接受一个或多个参数,可以返回一个或多个值。 MySQL存储函数具有以下优点: 增加了代码重用性; 提高了代码的模块化和可维护性; 提高了查询性能。 下面是一个MySQL存储函数的例子: DELIMITER // CREATE FUNCTION getAverage…

    MySQL 2023年3月10日
    00
  • Redis缓存问题

    Redis是什么? Redis是一款开源的内存数据存储系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。Redis将数据全部保留在内存中,因此读写速度快,是一款高性能的缓存系统。Redis还支持数据持久化,即将数据存储到磁盘中,以避免数据丢失。 Redis作为缓存系统的优势 高性能 Redis将数据全部加载到内存中,因此读写速度快,可以实现…

    Redis 2023年3月21日
    00
  • mysql 设置默认的时间值

    若想在MySQL的表中,为某个datetime类型的字段设置默认值,可以通过以下两种方式实现。 方式一:使用默认值函数 在MySQL中,可以使用now()函数获取当前系统时间,并将其作为该字段的默认值,步骤如下: 创建表时,在定义datetime类型字段时,使用default关键字指定now()函数作为默认值,示例代码如下: CREATE TABLE my_…

    database 2023年5月22日
    00
  • 30分钟学会用PHP写带数据库的简单通讯录第2/3页

    为了学习如何使用PHP编写带有数据库的简单通讯录,您需要遵循以下步骤: 确定需求和设计数据库结构 在编写任何代码前,您需要明确所需的功能和数据库结构。例如,您可能需要一个联系人列表,并搜集以下信息:姓名、电话号码、电子邮件地址等。一旦确定了这些需求,您可以设计一个数据库结构来存储这些信息,例如创建一个名为contacts的表,每个联系人有一个id、name、…

    database 2023年5月21日
    00
  • SQL中Where子句和Having子句的区别

    在 SQL 查询中,Where 子句和 Having 子句都用于筛选数据行,但它们有着不同的使用场景和注意事项。 Where 子句 Where 子句用于筛选满足指定条件的数据行,可以用于所有的查询语句。通常使用的格式为: SELECT column1, column2, … FROM table_name WHERE condition; 其中 colu…

    database 2023年3月27日
    00
  • ubuntu server配置mysql并实现远程连接的操作方法

    下面就是关于“ubuntu server配置mysql并实现远程连接的操作方法”的完整攻略,具体步骤如下: 准备工作 首先你需要安装ubuntu server操作系统,并确保已经与互联网连接成功; 确保你已经安装了MySQL数据库服务。 配置MySQL 进入MySQL命令行界面。 打开终端输入以下命令: $ mysql -u root -p 输入密码后即可进…

    database 2023年5月18日
    00
  • MySQL存储过程的异常处理方法

    MySQL存储过程的异常处理方法 MySQL存储过程中的异常处理可以通过以下几种方式来完成: DECLARE 声明异常变量,用于存储异常信息 sqlDECLARE exception_info VARCHAR(100);BEGIN—- 执行语句–EXCEPTIONWHEN exception_name THEN SET exception_info =…

    database 2023年5月21日
    00
  • COBIT和ITIL的区别

    COBIT和ITIL都是用于管理信息技术的框架。两个框架虽然在很多方面有着协同作用,但实际上这两个框架从根本上是不同的。下面是关于COBIT和ITIL之间区别的一些详细说明。 COBIT COBIT全称是控制目标信息技术(Corporate Objectives for Information and Related Technology),是一个广泛使用的…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部