版权声明:原创文章转载请声明出处https://blog.csdn.net/qq_40374604 https://blog.csdn.net/qq_40374604/article/details/84951260
dbcp数据库连接池的简单使用---MySQL
有问题可以留言,如果你是初学者,下面的示例代码很不错:)
package mysqlTest;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.omg.CORBA.Object;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/**
* Description:使用dpcp连接池连接数据库
*
* @author 0
* Created by 2018年12月11
*/
public class DBCPUtil {
/**
* 数据源
*/
private static DataSource DS;
private static String configFile = "/dbcp.properties";
/**
* @return
* @Description: 从数据源获取一个连接
*/
public Connection getConnection() {
Connection connection = null;
if (DS != null) {
try {
connection = DS.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
return connection;
}
/**
* 默认的构造函数
*/
public DBCPUtil() {
DBCPUtil.initDbcp();
}
/**
* @Description: 方式一,DBCP通过读取配置文件获取参数后,通过BasicDataSourceFactory获取DataSource
*/
private static void initDbcp() {
Properties properties = new Properties();
try {
properties.load(Object.class.getResourceAsStream(configFile));
DS = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 构造函数,初始化了DS,指定数据库
*/
public DBCPUtil(String connectURI) {
initDS(connectURI);
}
/**
* 构造函数,初始化DS,制定所有参数
*/
public DBCPUtil(String connectURI, String username, String password, String driverClass,
int initialSize, int maxActive, int maxIdle,
int maxWait, int minIdle) {
initDS(connectURI, username, password, driverClass, initialSize, maxActive, maxIdle, maxWait, minIdle);
}
/**
* @param connectURI 数据库
* @return
* @Description 创建数据源,除了数据库外,都使用默认的参数
*/
public static void initDS(String connectURI) {
initDS(connectURI, "myoracle", "myoracle", "oracle.jdbc.driver.OracleDriver", 5, 30, 10, 1, 1000);
}
/**
* @param connectURI
* @param username
* @param password
* @param driverClass
* @param initialSize
* @param maxActive
* @param maxIdle
* @param maxWait
* @param minIdle
* @Description: 方式二,手动给创建DataSource,并给其设置参数
*/
public static void initDS(String connectURI, String username, String password, String driverClass,
int initialSize, int maxActive, int maxIdle,
int minIdle, int maxWait) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setUrl(connectURI);
dataSource.setInitialSize(initialSize);
dataSource.setMaxTotal(maxActive);
dataSource.setMaxIdle(maxIdle);
dataSource.setMaxWaitMillis(maxWait);
dataSource.setMinIdle(minIdle);
DS = dataSource;
}
public static void main(String[] args) {
System.out.println(new DBCPUtil().getConnection());
}
}
配置文件:(放到src目录下)
#dbcp.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
maxActive=30
maxIdle=10
minIdle=1
maxWait=10000
initialSize=5
removeAbandoned=true
removeAbandonedTimeout=300