jdbc-dbcp连接池

11 篇文章 0 订阅

在这里插入图片描述
jdbc.dirver的获取,要先下载对应的connection连接包
这里附上mysql8的connection连接包
链接:https://pan.baidu.com/s/16E6vVAeaENg5OnoZWx41vw
提取码:ou6z
在这里插入图片描述
jdbc.url是用来标识数据库的位置
jdbc:mysql://localhost:3306/homeworkonline?serverTimezone=Asia/Shanghai
在这里插入图片描述

package com.hadwinling.day02.student01;
/*
 * 使用dbcp数据库连接池
 */

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

import org.apache.commons.dbcp2.BasicDataSource;

public class Dbcp {
	public static final String CONFIG_FILEPATH ="poolconfig.properties";
	private static Properties properties= null;
	private static Dbcp dbcp;
	static {
		try {
			properties = new Properties();
			InputStream is =Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILEPATH);
			properties.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	BasicDataSource basicDataSource = null;
	public Dbcp() {
		//创建连接池对象
		basicDataSource = new BasicDataSource();
		//设置数据源参数
		basicDataSource.setDriverClassName(properties.getProperty("jdbc.driver"));
		basicDataSource.setUrl(properties.getProperty("jdbc.url"));
		basicDataSource.setUsername(properties.getProperty("jdbc.username"));
		basicDataSource.setPassword(properties.getProperty("jdbc.password"));
		
		//设置连接池参数
		basicDataSource.setInitialSize(Integer.parseInt(properties.getProperty("jdbc.initialSize")));
		basicDataSource.setMaxTotal(Integer.parseInt(properties.getProperty("jdbc.maxTotal")));
		basicDataSource.setMaxIdle(Integer.parseInt(properties.getProperty("jdbc.maxIdle")));
		basicDataSource.setMaxWaitMillis(Integer.parseInt(properties.getProperty("jdbc.maxWaitMillis")));
	}
	/*
	 * 这里是设置单例模式
	 */
	public static Dbcp getInstance() {
		if (dbcp ==null) {
			dbcp = new Dbcp();
		}
		return dbcp;
	}
	/*
	 * 返回数据源
	 */
	public BasicDataSource getBasicDataSource() {
		return basicDataSource;
	}
	/*
	 * 连接池获取链接对象
	 */
	public Connection getConnection() throws SQLException {
		return basicDataSource == null?null:basicDataSource.getConnection();
	}
	/*
	 * 归还连接
	 * 当需要解析对象时就要有ResultSet,
	 */
	public void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) {
		if (resultSet!=null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		close(connection, preparedStatement);
	}
	public void close(Connection connection,PreparedStatement preparedStatement) {
		if (preparedStatement!=null) {
			try {
				preparedStatement.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (connection!=null) {
			try {
				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、付费专栏及课程。

余额充值