Java Druid连接池与Apache的DBUtils使用教程

yizhihongxing

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 具体操作

以下是以查询操作为例的详细步骤:

  1. 实例化 QueryRunner 对象:

java
QueryRunner runner = new QueryRunner();

  1. 获取 DataSource 对象:

java
DataSource dataSource = DataSourceUtils.getDataSource();

  1. 执行查询操作,并获取返回结果:

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技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • 从云数据迁移服务看MySQL大表抽取模式的原理解析

    从云数据迁移服务看MySQL大表抽取模式的原理解析 前言 MySQL是目前互联网应用中广泛使用的关系型数据库之一,但是在处理大量数据时,由于MySQL存储引擎特性和限制导致单表数据量的限制相对较小。为了解决这个问题,可以采用大表抽取的方式,将数据按照一定的规则划分成小批量进行处理。本文从云数据迁移服务角度,结合大表抽取进行原理解析。 什么是云数据迁移服务? …

    Java 2023年6月16日
    00
  • MyBatis如何实现流式查询的示例代码

    流式查询是MyBatis中常用的一种查询方式,能够在处理大量数据时提高查询效率。以下是详细的 MyBatis 如何实现流式查询的攻略,包括两条示例代码: 1. 流式查询 流式查询被称为“游标”查询,是基于 JDBC 游标实现的。它的实现方式是通过一次读取一批数据,然后处理它们,最后再继续读取下一批数据。这样可以避免一次性读取所有匹配数据所带来的内存开销和响应…

    Java 2023年5月19日
    00
  • jQuery+Ajax实现用户名重名实时检测

    下面是“jQuery+Ajax实现用户名重名实时检测”的完整攻略: 1. 确认需求 在包含注册功能的网站中,为了避免用户注册时输入了已经存在的用户名,通常需要使用实时检测技术,及时判断当前输入的用户名是否在数据库中已经存在。基于此需求,我们需要使用jQuery和Ajax来实现这个功能。 2. 编写HTML部分 首先,在HTML中需要创建一个表单,包含输入框和…

    Java 2023年6月15日
    00
  • java括号匹配算法求解(用栈实现)

    Java括号匹配算法求解(用栈实现) 什么是括号匹配? 在计算机科学中,括号匹配是指验证一个表达式中的括号是否是成对出现、嵌套正确的。例如:()[]{}{}是一个合法的括号序列,而([)]则是不合法的括号序列。 如何检查括号匹配? 使用栈数据结构可以很容易地完成括号匹配的检查。 遍历字符串中的每个字符,如果遇到左括号则入栈,如果遇到右括号则出栈,出栈的同时判…

    Java 2023年5月19日
    00
  • 十一、JSP及语法概要

    十一、JSP及语法概要 JSP(Java Server Pages)是Java技术的一种,它允许在程序代码和HTML之间嵌入逻辑代码。使用JSP可以让开发者在不同模块之间进行更好的工作分配,提高项目开发进度和可维护性。 JSP基础 在JSP中可编写JavaScript脚本、HTML代码和Java代码。使用的标签有两种,即Java标签和转译标签。Java标签是…

    Java 2023年6月15日
    00
  • php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)

    首先我们来先了解一下什么是cURL。 cURL是一个计算机软件项目,它可以利用URL语法,向网络服务器发送请求并获取数据。cURL支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、IMAP、POP3 和 SMTP。cURL还支持HTTPS认证、HTTP POST方法、FTP上…

    Java 2023年6月16日
    00
  • Intellij IDEA 2017新特性之Spring Boot相关特征介绍

    IntelliJ IDEA 2017是一款功能强大的Java集成开发环境,提供了许多有用的功能和工具,特别是在Spring Boot开发方面。以下是IntelliJ IDEA 2017中Spring Boot相关特性的介绍: 1. Spring Boot Initializr IntelliJ IDEA 2017提供了Spring Boot Initiali…

    Java 2023年5月14日
    00
  • 安全管理器的作用是什么?

    安全管理器是一种可以用来管理Java应用程序中的安全策略的类,它可以控制应用程序访问受限资源的权限。在Java应用程序中,安全管理器主要用于保护操作系统的安全和避免恶意代码的攻击。 安全管理器主要有以下作用: 对于受保护的代码块进行管理和控制 安全管理器可以用来管理和控制Java应用程序中的受保护的代码块或敏感操作,例如文件读写操作、网络访问和反射调用。如果…

    Java 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部