尚硅谷之JDBC

方式二:

优化代码:

直接使用BasicDataSource,耦合,而且在代码中需要很多setXxx()设置属性值

使用dbcp.properties属性配置文件和BasicDataSourceFactory更灵活

步骤:

  1. 加载 dbcp 的 properties 配置文件: 配置文件中的键需要来自 BasicDataSource的属性.
  2. 调用 BasicDataSourceFactory 的 createDataSource 方法创建 DataSource实例
  3. 从 DataSource 实例中获取数据库连接.

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test

username=root

password=root

initialSize=3

maxActive=5

minIdle=2

maxWait=5000

package com.jdbc.datasource;

import java.sql.Connection;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class TestDBCP3 {

public static void main(String[] args) throws Exception {

//1.获取配置文件信息

//注意:配置文件中的key来自BasicDataSourceFactory的属性(set方法后面单词首字母改小写即可)

Properties pro = new Properties();

pro.load(ClassLoader.getSystemResourceAsStream("dbcp.properties"));

//2.创建DBCP数据源(即连接池)

DataSource ds = BasicDataSourceFactory.createDataSource(pro);

//3.从数据源中获取数据库连接

Connection conn = ds.getConnection();

System.out.println("获取1个"+conn);

}

}

JDBCUtils修改DBCP版:

package com.atguigu.utils;

import java.sql.Connection;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtils {

private static Properties pro = new Properties();

private static DataSource ds ;

static{

try {

//加载,读取jdbc.properties配置的信息

pro.load(ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties"));

//创建池子

ds = BasicDataSourceFactory.createDataSource(pro);

}  catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection()throws Exception{

return ds.getConnection();

}

}