Druid简介
Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。
Druid优点
- 高性能。性能比dbcp、c3p0高很多。
- 只要是jdbc支持的数据库,druid都支持,对数据库的支持性好。并且Druid针对oracle、mysql做了特别优化。
- 提供监控功能。可以监控sql语句的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈等信息,来了解连接池、sql语句的工作情况,方便统计、分析SQL的执行性能。
Druid的使用
添加Druid依赖,数据库驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
纯代码方式
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class PureCode {
public static void main(String[] args) throws SQLException {
//数据源配置
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://127.0.0.1/test?serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//获取连接
Connection connection = dataSource.getConnection();
//Statement接口
Statement statement = connection.createStatement();
String sql1 = "insert into student values (4, '杨杨', 20, '男', 1906)";
statement.executeUpdate(sql1);
//关闭连接
connection.close();
}
}
配置文件方式
编写配置文件druid.properties
url=jdbc:mysql://127.0.0.1/test?serverTimezone=UTC
username=root
password=123456
# 初始连接数,默认0
initialSize=10
# 最大连接数,默认8
maxActive=30
# 最小闲置数
minIdle=10
# 获取连接的最大等待时间,单位毫秒
maxWait=2000
# 缓存PreparedStatement,默认false
poolPreparedStatements=true
# 缓存PreparedStatement的最大数量,默认-1(不缓存)。
# 大于0时会自动开启缓存PreparedStatement,所以可以省略上一句设置
maxOpenPreparedStatements=20
编写源代码
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.Properties;
public class ConfigurationFile {
public static void main(String[] args) throws Exception {
//数据源配置
Properties properties = new Properties();
//通过当前类的class对象获取配置文件流
InputStream inputStream = ConfigurationFile.class.getClassLoader().getResourceAsStream("druid.properties");
// 从流中加载数据
properties.load(inputStream);
//创建数据库连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//获取连接
Connection connection = dataSource.getConnection();
//Statement接口
Statement statement = connection.createStatement();
statement.executeUpdate("insert into student values (5, '肖杨', 19, '男', 1905)");
//关闭连接
connection.close();
}
}