DataBase Connectivity Poll 数据库连接池

DBCP

为什么使用DBCP:将连接重用,避免资源浪费,提高执行效率

如何使用?

1. 导入相关jar包:commons-dbcp

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

导入成功后在Maven Dependcies下会有
commons-dbcp-1.4.jar
commons-poll-1.5.4.jar
这两个包

2.创建连接池

首先写一份配置文件,方便修改
文件名我写成jdbc.properties
里面用来保存sql的地址,username,password

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb2?useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
				username=yaojiahui
password=741236

然后就可以开始创建了

package DBCP;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class DBUtils {
	//连接池只需要一个,所以放在静态块里,因为静态块只在类加载的时候运行一次
	private static BasicDataSource ds;
	static {
		//读取配置文件
		//创建读取配置文件的对象
		Properties pp = new Properties();
		//通过类加载器来获取文件输入流
		InputStream ips = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
		//加载输入流,抛出异常
		try {
			pp.load(ips);
			//读取数据
			String driver = pp.getProperty("driver");
			String url = pp.getProperty("url");
			String username = pp.getProperty("username");
			String password = pp.getProperty("password");
			//______________________我是一条分割线________________________________________
			//创建连接池对象
			ds = new BasicDataSource();
			//设置数据库连接信息
			ds.setDriverClassName(driver);
			ds.setUrl(url);
			ds.setUsername(username);
			ds.setPassword(password);
			//设置初始连接数量10
			ds.setInitialSize(10);
			//设置最大连接数量100
			ds.setMaxActive(100);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static Connection getConnection() throws Exception {
		//获取连接,异常抛出
		Connection connection = ds.getConnection();
		System.out.println(connection);	
		//返回connection对象,此方法为静态,方便调用
		return connection;

	}
}

你可能感兴趣的:(mysql,java)