数据库连接池的学习

数据库连接池

为什么要用数据库连接池
数据库的连接资源是非常珍贵的,但是频繁的连接数据库,关闭数据库,对数据库资源的消费是非常大的,所以我们要用到数据库连接池

环境搭建

1.导入druid的jar包

在这里插入图片描述

.

2.数据库源配置

在src根路径下创建db.properties文件,配置信息如下:

driverClassName=com.mysql.cj.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/week6exam?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username = root
password = 123456

//初始化连接对象的数量
initialSize=10
//运行时的最大使用量
maxActive=30
//最小空闲的时间
minIdle=10
//最大等待时间
maxWait=2000

.

3.创建连接池

数据库连接工具包
在这里插入图片描述

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

/**
 * JDBC工具类: 连接数据库直接调用此工具类
 */
public class JDBCUtil {
	
	private static DataSource dataSource;//静态的方法只能调用静态的语法
	
	/**
	 * 连接数据库,获取连接对象connection
	 * 
	 * @return 将连接对象connection返回到方法的调用处
	 */
	public static Connection getConnection() {
		
		if(dataSource == null) {
			try {
				//1.建管道--读src根路径下的文件
				InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
				
				//2.创建properties对象
				Properties properties = new Properties();
				
				//3.把数据加载到properties
				properties.load(input);
			
				//4.创建数据库连接池对象dataSource
				dataSource = DruidDataSourceFactory.createDataSource(properties);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		//5.从数据库连接池中取连接对象
		Connection connection = null;
		try {
			connection = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
//		System.out.println(dataSource);打印数据库连接池对象
		return connection;
	}
//下面为关闭连接,到此Druid配置完成
	
	/**
	 * 关闭连接
	 * 
	 * @param connection 连接对象 用完后需关闭
	 * @param pst        预编译对象
	 */
	public static void close(Connection connection, PreparedStatement pst) {
		try {
			if (pst != null) {
				pst.close();
			}
			if (connection != null) {
				connection.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 关闭连接
	 * 
	 * @param connection 跟建立连接--得到连接对象 用完后需关闭
	 * @param pst        预编译对象
	 * @param rs         结果集对象 也需要关闭
	 */
	public static void close(Connection connection, PreparedStatement pst, ResultSet rs) {// 方法的重载
		try {
			if (rs != null) {
				rs.close();
			}
			if (pst != null) {
				pst.close();
			}
			if (connection != null) {
				connection.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值