druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法
Posted otways
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法相关的知识,希望对你有一定的参考价值。
方法改进前:
@Test
public void test01() throws Exception{
InputStream is = Demo.class.getClassLoader().getResourceAsStream("druid.properties");
//创建配置文件对象
Properties properties = new Properties();
properties.load(is);
//创建连接池对象
//druid 提供了一个工具类对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//获取连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
//打印连接池
System.out.println(dataSource);
//归还到连接池
connection.close();
}
写成工具类的写法:
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.support.jconsole.DruidSqlDetailFrame;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
//连接池的工具类
public class DataSourceUtils {
// 声明变量 static
public static DataSource dataSource;
// 初始化连接池(仅一次)
static {
// 加载 druid.properteis 使用类加载
System.out.println(DataSourceUtils.class.getClassLoader());
InputStream is = DataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties");
// 创建连接池对象 使用工具类
try {
// 创建配置文件对象
Properties properties = new Properties();
// 加载io流 key = value
properties.load(is);
// 使用第三方连接池 druid
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
// 提供获取连接池的方法
public static DataSource getDataSource() {
return dataSource;
}
// 提供获取连接的方法
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
// 提供关闭资源的方法【connection是归还到连接池】
// 提供关闭资源的方法 【方法重载】3 dql
public static void closeResource(ResultSet resultSet, Statement statement, Connection connection) {
// 关闭结果集
// ctrl+alt+m 将java语句抽取成方法
closeResultSet(resultSet);
// 关闭语句执行者
closeStatement(statement);
// 关闭连接
closeConnection(connection);
}
// 提供关闭资源的方法 【方法重载】 2 dml
public static void closeResource(Statement statement, Connection connection) {
// 关闭语句执行者
closeStatement(statement);
// 关闭连接
closeConnection(connection);
}
private static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static void closeStatement(Statement statement) {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static void closeResultSet(ResultSet resultSet) {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
以上是关于druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法的主要内容,如果未能解决你的问题,请参考以下文章