JDBC数据库连接池(持久化操作)

当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。

1.在idea项目中,新建一个持续类的persiste包,在包下新建一个impl包,用于放实现类代码,在实现类包下新建连接池——MySqlDbUtil类。

如下图所示:

JDBC数据库连接池(持久化操作)_第1张图片

2.进入mvnrepository.com,搜索druid 和 mysql-connector-java 插件,复制maven项目类代码,粘贴到pom.xml中的dependencies下。

可直接复制如下代码:

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.22</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.48</version>
    </dependency>

粘贴后会自动下载插件包,需要等待一段时间,当如下图显示 ,则下载完成。
JDBC数据库连接池(持久化操作)_第2张图片

3.编写连接池——MySqlDbUtil类

代码如下:

package cn.edu.mju.project1.persiste.impl;

import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;

public class MySqlDbUtil {
    private static DruidDataSource dataSource = null;//创建静态数据源对象
    private static void initDataSource() throws Exception{
        if(dataSource == null){
            dataSource = new DruidDataSource();//创建数据源
            //连接参数:
            dataSource.setUrl("jdbc:mysql://localhost:3306/band1?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8");
            dataSource.setUsername("root");
            dataSource.setPassword("root");
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");

            dataSource.setInitialSize(2);//初始化连接数
            dataSource.setMinIdle(2);//最小连接数
            dataSource.setMaxActive(10);//最大连接数

            dataSource.setMaxWait(20000);//等待连接时间
            dataSource.setTimeBetweenEvictionRunsMillis(20000);//一段时间内检查连接数

            dataSource.setValidationQuery("SELECT 'x'");//验证数据库连接的有效性
            dataSource.setTestWhileIdle(true);
            dataSource.setTestOnBorrow(true);
        }
    }

    public static Connection getConnection() throws Exception{
        initDataSource();//执行一次初始化数据源方法,防止DataSource为空
        return dataSource.getConnection();//建立数据库连接
    }
}

需要注意的地方:这里的jdbc:mysql://localhost:3306与下图的URL一致

JDBC数据库连接池(持久化操作)_第3张图片

4.在测试包中新建一个测试类,测试连接池,确保数据库成功连接。

JDBC数据库连接池(持久化操作)_第4张图片
import cn.edu.mju.project1.service.impl.MySqlDbUtil;
import org.junit.Test;

public class TestDbUtil {
    @Test
    public void testConnection()  {
        try {
            MySqlDbUtil.getConnection();
            System.out.println("连接成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5.测试结果:

JDBC数据库连接池(持久化操作)_第5张图片

你可能感兴趣的:(学习记录)