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

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日

相关文章

  • SpringBoot文件上传与下载功能实现详解

    下面我将为你详细讲解如何使用SpringBoot实现文件上传与下载功能。 一、上传文件 1. 添加依赖 在pom.xml中添加如下依赖,用于实现文件上传的功能: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring…

    Java 2023年5月19日
    00
  • java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    Java查询Oracle数据库所有表DatabaseMetaData的用法 在Java中,我们可以使用DatabaseMetaData接口来查询Oracle数据库的元数据信息,包括所有表、列、索引等信息。下面我们来详细介绍如何使用DatabaseMetaData查询Oracle数据库中所有表的信息。 步骤一:加载Oracle驱动程序 在使用Oracle的JD…

    Java 2023年5月19日
    00
  • Springboot使用Logback实现日志配置与异常记录

    Spring Boot使用Logback实现日志配置与异常记录 介绍 Spring Boot是一款轻量级的应用框架,它提供了很多有用的功能来简化应用开发流程,其中包括了日志记录功能。Logback是一个优秀的日志框架,它可以取代Java标准库的日志框架,并支持通过XML文件配置日志。在这篇教程中,我们将看到如何在Spring Boot应用中使用Logback…

    Java 2023年5月25日
    00
  • java开发MyBatis中常用plus实体类注解符详解

    Java开发MyBatis中常用Plus实体类注解符详解 什么是MyBatis Plus? MyBatis Plus是MyBatis的一个增强工具,在MyBatis基础之上进行扩展。MyBatis Plus提供了很多实用的增强功能,如分页查询、条件构造器、逻辑删除、自动填充等,使得开发人员可以更加快捷地编写代码。在MyBatis Plus中,实体类注解符是其…

    Java 2023年5月20日
    00
  • 详解Java内存溢出的几种情况

    详解Java内存溢出的几种情况 Java是一种自动管理内存的语言,但是在极端情况下也有可能出现内存泄漏或内存溢出的问题。本文将详细讲解Java内存溢出的几种情况,包括示例说明。 什么是Java内存溢出 Java内存溢出指的是程序申请的内存量超出了JVM虚拟机规定的内存限制,导致JVM无法再为申请内存分配空间。这时程序会出现异常并中断执行。 几种引起Java内…

    Java 2023年5月27日
    00
  • 详解python的四种内置数据结构

    详解Python的四种内置数据结构 Python语言内置了四种主要的数据结构,分别是列表(list)、元组(tuple)、字典(dict)和集合(set)。本文将对这四种数据结构进行详细讲解。 列表(list) 列表是Python中最常用的数据结构之一,用于存储一系列有序的元素。列表用方括号([])表示,元素之间使用逗号分隔。以下就是一个简单的列表例子: f…

    Java 2023年5月26日
    00
  • Perl使用Tesseract-OCR实现验证码识别教程

    下面我将为您详细讲解如何使用Perl语言配合Tesseract-OCR开源库实现验证码识别。整个过程共分为以下几个步骤: 安装Tesseract-OCR 安装Perl模块 获取验证码图片 预处理图片 使用Tesseract-OCR进行识别 整合以上步骤 接下来,我们将一步一步来看每个步骤的详细说明。 安装Tesseract-OCR Tesseract-OCR…

    Java 2023年5月26日
    00
  • 日期与时间【Date/SimpleDateFormat/Calendar】

    视频链接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3 1 Data 1.1 Date类概述 Date类的对象在java中代表的是当前所在系统的此刻日期时间。 Date的构造器 public Date():创建一…

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