Java使用MySQL实现连接池代码实例

本文将详细讲解Java如何使用MySQL实现连接池。

什么是连接池?

对于Java Web应用或其他需要访问数据库的应用而言,每次需要访问数据库时都会不断地建立和销毁连接,这样既费时,也会使得数据库资源消耗。连接池是一种优雅的解决方案,它可以在应用启动时创建连接池,从而使得应用只在启动和关闭时创建和销毁连接,以达到减少连接创建和销毁的消耗的效果。

如何实现连接池?

步骤1:创建数据库连接池

我们可以使用Apache Commons DBCP连接池库来构建数据库连接池,可以通过以下步骤创建连接池:

  1. 引入DBCP库:

xml
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

  1. 创建BasicDataSource对象:

java
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setInitialSize(10);
dataSource.setMaxActive(20);

在上面的代码中,我们设置了最初的连接池大小为10,最大活动连接数为20。

步骤2:从连接池中获取连接

我们可以使用以下代码从数据库连接池中获取连接:

Connection connection = dataSource.getConnection();

示例1:使用连接池与MySQL数据库通信

以下是示例代码:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp2.BasicDataSource;

public class Main {

  public static void main(String[] args) throws SQLException {

    // 创建数据库连接池
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/test");
    dataSource.setUsername("root");
    dataSource.setPassword("password");
    dataSource.setInitialSize(10);
    dataSource.setMaxActive(20);

    // 使用连接池获取连接
    Connection connection = dataSource.getConnection();
    Statement statement = connection.createStatement();

    // 执行查询,并输出结果
    ResultSet resultSet = statement.executeQuery("SELECT * FROM user;");
    while (resultSet.next()) {
      System.out.println("id: " + resultSet.getInt("id"));
      System.out.println("name: " + resultSet.getString("name"));
      System.out.println("age: " + resultSet.getInt("age"));
    }

    // 关闭连接
    resultSet.close();
    statement.close();
    connection.close();
  }
}

示例2:在Web应用中使用连接池与MySQL数据库通信

以下是Web应用中实现连接池的示例代码:

import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.dbcp2.BasicDataSource;

public class ConnectionPoolServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

  // 声明一个数据库连接池对象
  private BasicDataSource dataSource;

  @Override
  public void init() throws ServletException {
    super.init();
    try {
      // 创建数据源
      dataSource = new BasicDataSource();
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql://localhost:3306/test");
      dataSource.setUsername("root");
      dataSource.setPassword("password");
      dataSource.setInitialSize(10);
      dataSource.setMaxActive(20);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    try {
      // 从连接池中获取连接
      Connection connection = dataSource.getConnection();

      // 业务逻辑操作...
      // ...

      // 关闭连接
      connection.close();
    } catch (SQLException ex) {
      ex.printStackTrace();
    }
  }

  @Override
  public void destroy() {
    super.destroy();
    try {
      // 关闭连接池
      if (dataSource != null) {
        dataSource.close();
      }
    } catch (SQLException ex) {
      ex.printStackTrace();
    }
  }
}

在上面的示例中,我们在servlet的init()方法中创建了一个数据库连接池对象,并在doPost()方法中从连接池中获取连接,执行业务逻辑操作,最后在finally块中关闭连接。在servlet的destroy()方法中,在应用关闭时关闭数据库连接池。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用MySQL实现连接池代码实例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Resty极简restful框架快速接入Spring

    Resty是一个基于Java的类似于JAX-RS的RESTful框架,它提供了核心的RESTful应用层框架,可以快速搭建RESTful应用程序。在这里,我将详细介绍如何将Resty快速整合到Spring框架中。 准备工作 在整合Resty之前,请确认已经安装好以下环境: JDK 1.8或更高版本 Maven 3.0或更高版本 Spring框架 添加Mave…

    Java 2023年5月19日
    00
  • 微信小程序—微信跳一跳,Android游戏助手(外挂)使用教程详解

    微信小程序-微信跳一跳攻略 微信跳一跳是一款非常受欢迎的休闲游戏,玩家通过点击屏幕,让小人获得满分。为了获得更高的分数,很多玩家会使用外挂,本文将会介绍如何使用一个Android游戏助手进行微信跳一跳外挂。 步骤一:安装Android游戏助手 在Android手机上安装一个游戏助手是使用微信跳一跳外挂的前提条件。比较流行的游戏助手有:Game Guardia…

    Java 2023年5月23日
    00
  • Java多线程CyclicBarrier的实现代码

    Java多线程中的CyclicBarrier是一种同步工具,能够让线程自动等待,直到所有线程同时到达某一个屏障点,再同时开始进行后面的操作。在本文中,我们将详细讲解CyclicBarrier的实现代码,包括定义CyclicBarrier、初始化CyclicBarrier、实现CyclicBarrier以及使用CyclicBarrier的代码示例。 定义Cyc…

    Java 2023年5月18日
    00
  • JS+CSS实现的日本门户网站经典选项卡导航效果

    实现日本门户网站经典选项卡导航效果,需要使用JS和CSS两种语言。 下面是一些步骤和示例说明: 步骤一:HTML结构 首先,在 HTML 中创建导航选项卡的外层容器,再在容器内创建导航选项卡的标题与内容。 示例: <div class="tab-container"> <ul class="tab-title-…

    Java 2023年6月16日
    00
  • Spring Boot 整合mybatis 使用多数据源的实现方法

    下面我们就来详细讲解一下“Spring Boot 整合 mybatis 使用多数据源的实现方法”: 什么是多数据源 在一个系统中,通常会使用多个数据库,比如一个系统中需要同时操作 MySQL 和 Oracle 数据库。这就需要在系统中使用多个数据源,分别连接并操作不同的数据库。 Spring Boot 整合 mybatis 使用多数据源的实现方法 添加相关依…

    Java 2023年5月20日
    00
  • 详解SpringBoot+SpringSecurity+jwt整合及初体验

    详解SpringBoot+SpringSecurity+jwt整合及初体验 本文将详细讲解如何将SpringBoot、SpringSecurity和jwt整合起来实现用户认证与授权功能,包含完整的代码和详细的步骤,最终实现一个简单的用户登录验证功能。 环境准备 JDK 1.8 Maven 3.x IDE: 推荐使用IntelliJ IDEA Postman:…

    Java 2023年5月20日
    00
  • Java中输入与输出的方法总结

    接下来我会详细讲解Java中输入与输出的方法总结,下文包含标题、段落、列表、代码块等markdown格式的内容,方便您查看和学习。 Java中输入与输出的方法总结 Java中的输入与输出指的是程序的输入和输出操作。根据数据的输入/输出位置不同,可以将Java中的输入/输出方式分为以下四种: 标准输入输出 文件输入输出 网络输入输出 对象输入输出 1. 标准输…

    Java 2023年5月26日
    00
  • Mybatis执行流程、缓存原理及相关面试题汇总

    下面我会详细讲解Mybatis执行流程、缓存原理及相关面试题汇总。 Mybatis执行流程 Mybatis的执行流程大致可以分为以下几个步骤: 解析SqlMapConfig.xml文件,创建Configuration对象; 解析映射文件,创建MappedStatement对象; 创建SqlSessionFactory对象; 创建SqlSession对象; 使…

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