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日

相关文章

  • SpringCloud Gateway 路由配置定位原理分析

    Spring Cloud Gateway是Spring Cloud生态系统中的一个API网关,它提供了一种简单而有效的方式来路由请求、过滤请求和转换请求。在本文中,我们将详细讲解Spring Cloud Gateway的路由配置定位原理分析。 路由配置 在Spring Cloud Gateway中,我们可以使用路由配置来定义请求的路由规则。路由配置由一个或多…

    Java 2023年5月18日
    00
  • Java关于数组的介绍与使用

    Java关于数组的介绍与使用 数组是一组数据的集合,是Java中的一种基本的数据结构类型,具有以下特点: 数组是一种固定大小,且元素类型相同的数据结构; 数组的下标从0开始; 数组在创建时需要指定长度,且长度不可改变; 数组可以存储基本类型和引用类型。 声明和初始化数组 声明数组的语法格式如下: dataType[] arrayName;//推荐 或 dat…

    Java 2023年5月26日
    00
  • JAVA velocity模板引擎使用实例

    下面是关于“JAVA velocity模板引擎使用实例”的详细讲解。 什么是Velocity模板引擎 Velocity模板引擎是一种基于文本模板的渲染引擎,支持将变量、逻辑处理、循环等结构和语法写在模板里面,然后使用程序将模板中的变量值替换成真正的值后输出。Velocity模板引擎是一种轻量级的模板引擎,具有易读易懂、易扩展等特点,被广泛应用于各种JAVA …

    Java 2023年5月19日
    00
  • Java如何获取JSON中某个对象的值

    获取JSON中某个对象的值最常用的方式是通过Java的JSON库将JSON字符串转换成Java中的对象,然后通过对象属性的方式获取需要的值。下面是获取JSON中某个对象的值的完整攻略以及两条示例说明: 步骤一:导入依赖 首先需要导入相关的依赖,本文使用的是Gson库,可以在项目中添加以下依赖: <dependency> <groupId&g…

    Java 2023年5月26日
    00
  • Java中时间戳的获取和转换的示例分析

    本文将详细讲解Java中获取和转换时间戳的方法以及示例分析。 什么是时间戳 在计算机领域中,时间戳指的是从某个固定时间点(通常指1970年1月1日00:00:00 UTC)到当前时间的毫秒数或秒数。 获取时间戳 在Java中,获取当前时间的时间戳可以使用System.currentTimeMillis()方法,它返回的是当前时间以毫秒为单位的时间戳。 lon…

    Java 2023年5月20日
    00
  • 详解在Linux虚拟机下配置tomcat

    详解在Linux虚拟机下配置tomcat 概述 Tomcat是一个开源的Java Servlet容器,是Apache软件基金会的Jakarta项目中的一个核心项目。Tomcat支持的规范包括Java Servlet、JavaServer Pages (JSP)、Java Expression Language (EL)和Java WebSocket。本文将以…

    Java 2023年5月19日
    00
  • Java中的接口是什么?

    Java中的接口是一种特殊类型的抽象类,它定义了一组标准规范,用于实现类在特定情况下应该采取的行为。接口本身不能被实例化,但是可以被类实现,从而实现接口定义的标准规范。 Java中的接口主要具有以下特点: 接口中的所有方法都是抽象的,不能包含实现。 接口中的所有方法默认是public的,不能使用其他类型的访问修饰符。 接口中可以定义属性,但是这些属性默认是s…

    Java 2023年4月28日
    00
  • Java汉字转拼音类库Pinyin4j详细使用方法与实例

    Java汉字转拼音类库Pinyin4j详细使用方法与实例 简介 Pinyin4j是一个用Java编写的汉字转拼音的类库。它使用了多种算法对汉字进行拼音转换,支持将汉字转换为带声调的拼音、拼音首字母、拼音全拼等多种格式。本攻略将介绍Pinyin4j的详细使用方法,并给出两个实例。 操作步骤 步骤1:引入Pinyin4j类库 在项目中引入Pinyin4j的jar…

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