当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。
1.在idea项目中,新建一个持续类的persiste包,在包下新建一个impl包,用于放实现类代码,在实现类包下新建连接池——MySqlDbUtil类。
如下图所示:

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>
粘贴后会自动下载插件包,需要等待一段时间,当如下图显示 ,则下载完成。
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一致
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.测试结果:

版权声明:本文为kkkjy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。