Java Druid连接池与Apache的DBUtils使用教程
简介
Java 连接池是一种在应用程序中重用数据库连接的技术,它能够有效地提高应用程序的性能和资源利用率。Druid 是阿里巴巴开源的高性能 Java 数据库连接池库,提供了比常见开源数据库连接池更为丰富的功能。DBUtils 是 Apache 开源的轻量级 JDBC 工具库,它提供了简单方便的 API,用于执行 JDBC 操作。
本文将详细介绍如何使用 Java Druid 连接池和 Apache 的 DBUtils 基于 MySQL 数据库的相关操作。
Druid 连接池教程
添加 Maven 依赖
在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
配置 Druid 数据源
在项目 resources 目录下创建 druid.properties 文件,配置数据源参数:
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
username=root
password=password
# 配置初始化大小、最大活跃连接数、最大等待时间等参数
initialSize=5
maxActive=20
maxWait=60000
# 配置统计和日志参数
timeBetweenLogStatsMillis=60000
logAbandoned=true
创建 Druid 数据源对象
在代码中获取 Druid 数据源对象,代码示例如下:
import com.alibaba.druid.pool.DruidDataSource;
import javax.sql.DataSource;
import java.util.Properties;
public class DataSourceUtils {
private static final Properties props = new Properties();
private static final DataSource dataSource;
static {
try {
props.load(DataSourceUtils.class.getResourceAsStream("/druid.properties"));
dataSource = new DruidDataSourceFactory().createDataSource(props);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static DataSource getDataSource() {
return dataSource;
}
}
使用 Druid 数据源进行数据库操作
获取 Druid 数据源对象后,可以使用该对象进行数据库操作。由于本文示例使用 Apache 的 DBUtils 库进行操作,因此需要添加 DBUtils 的 Maven 依赖:
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
接下来是具体的使用示例:
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;
public class UserDao {
private final DataSource dataSource;
public UserDao() {
dataSource = DataSourceUtils.getDataSource();
}
public List<User> getAllUsers() throws SQLException {
QueryRunner runner = new QueryRunner(dataSource);
return runner.query("SELECT * FROM user", new BeanListHandler<>(User.class));
}
public User getUserById(int id) throws SQLException {
QueryRunner runner = new QueryRunner(dataSource);
return runner.query("SELECT * FROM user WHERE id = ?", new BeanHandler<>(User.class), id);
}
public void addUser(User user) throws SQLException {
QueryRunner runner = new QueryRunner(dataSource);
runner.update("INSERT INTO user (name, age, gender) VALUES (?, ?, ?)", user.getName(), user.getAge(), user.getGender());
}
public void deleteUser(int id) throws SQLException {
QueryRunner runner = new QueryRunner(dataSource);
runner.update("DELETE FROM user WHERE id = ?", id);
}
public void updateUser(User user) throws SQLException {
QueryRunner runner = new QueryRunner(dataSource);
runner.update("UPDATE user SET name = ?, age = ?, gender = ? WHERE id = ?", user.getName(), user.getAge(), user.getGender(), user.getId());
}
}
DBUtils 使用教程
在本文中已经演示了如何在使用 Druid 连接池的基础上,使用 DBUtils 进行数据库操作。
DBUtils 架构及 API 简介
DBUtils 采用了装饰器模式,封装了 JDBC 操作的细节,提供了简单方便的 API,支持常见的 SQL 操作,包括 SELECT、UPDATE、INSERT 和 DELETE。DBUtils 的主要 API 包括:
- QueryRunner:封装了 SQL 查询操作的 API,支持处理 ResultSet 和返回自定义 JavaBean 的操作。
- ResultSetHandler:定义了 ResultSet 处理方法的接口,提供了将 ResultSet 转化为 JavaBean 的接口。
- InsertRowProcessor:定义了对 INSERT 语句自动生成主键的操作。
此外,DBUtils 还提供了类似 Hibernate 的返回类型转化,支持时间转化、数值转化等操作。
DBUtils API 具体操作
以下是以查询操作为例的详细步骤:
- 实例化 QueryRunner 对象:
java
QueryRunner runner = new QueryRunner();
- 获取 DataSource 对象:
java
DataSource dataSource = DataSourceUtils.getDataSource();
- 执行查询操作,并获取返回结果:
java
List<User> users = runner.query(dataSource.getConnection(), "SELECT * FROM user", new BeanListHandler<>(User.class));
完整代码示例:
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;
public class UserDao {
private final QueryRunner runner = new QueryRunner();
private final DataSource dataSource;
public UserDao() {
dataSource = DataSourceUtils.getDataSource();
}
public List<User> getAllUsers() throws SQLException {
return runner.query(dataSource.getConnection(), "SELECT * FROM user", new BeanListHandler<>(User.class));
}
}
至此,我们已经完成了 Java Druid 连接池和 Apache 的 DBUtils 使用教程,以上仅为示例,具体操作需参考实际需求进行修改和定制。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Druid连接池与Apache的DBUtils使用教程 - Python技术站