关于数据库连接池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技术站