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();
}
}
}
}