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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM