使用DruidAbstractDataSource实现数据源
概述
在Java开发中,我们常常需要使用数据源来连接数据库,而Druid是一种开源的、高性能的数据库连接池,可以有效地管理数据库连接,提高系统的性能和稳定性。本文将介绍如何使用DruidAbstractDataSource来实现数据源。
一、整体流程
在使用DruidAbstractDataSource实现数据源的过程中,我们需要完成以下几个步骤:
步骤 | 描述 |
---|---|
1 | 添加Druid的依赖库 |
2 | 配置Druid数据源 |
3 | 获取Druid数据源 |
4 | 使用Druid数据源连接数据库 |
下面,我们将逐步介绍每个步骤需要做什么,以及对应的代码示例。
二、添加Druid的依赖库
首先,我们需要在项目的构建文件(如Maven的pom.xml)中添加Druid的依赖库。在此之前,需要确认已经配置了相应的仓库信息。
<!-- 添加Druid的依赖库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
三、配置Druid数据源
接下来,我们需要编写配置文件,配置Druid数据源的相关参数。一般情况下,可以将这些配置项放在一个.properties文件中,如druid.properties
。
# 数据库连接url
druid.url=jdbc:mysql://localhost:3306/mydb
# 数据库用户名
druid.username=root
# 数据库密码
druid.password=123456
# 数据库驱动类名
druid.driver-class-name=com.mysql.jdbc.Driver
# 数据库连接池的初始大小
druid.initial-size=5
# 数据库连接池的最大连接数
druid.max-active=20
# 数据库连接池的最小空闲连接数
druid.min-idle=5
四、获取Druid数据源
在代码中,我们需要读取配置文件,并创建Druid数据源对象。为了方便管理,我们可以将数据源对象作为单例模式进行管理。
import com.alibaba.druid.pool.DruidDataSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class DataSourceFactory {
private static DruidDataSource dataSource;
private DataSourceFactory() {}
public static synchronized DruidDataSource getDataSource() {
if (dataSource == null) {
Properties props = new Properties();
try (InputStream in = DataSourceFactory.class.getResourceAsStream("/druid.properties")) {
props.load(in);
dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(props);
} catch (IOException e) {
e.printStackTrace();
}
}
return dataSource;
}
}
五、使用Druid数据源连接数据库
最后,我们可以使用Druid数据源来连接数据库并进行相关操作。下面是一个简单的示例:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
public class Example {
public static void main(String[] args) {
DataSource dataSource = DataSourceFactory.getDataSource();
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
connection = dataSource.getConnection();
statement = connection.prepareStatement("SELECT * FROM users");
resultSet = statement.executeQuery();
while (resultSet.next()) {
// 处理结果集
System.out.println(resultSet.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
以上代码中,我们使用Druid数据源获取数据库连接,并执行查询操作,最后释放资源。
类图
classDiagram
class DruidDataSource {
-Properties properties
+getConnection()
+close(Connection connection)
+close(Statement statement)
+close(ResultSet resultSet)
}
class DataSourceFactory {
-DruidDataSource dataSource
+getDataSource(): DruidDataSource
}
class Example {
+main(String[] args)
}