Druid連線池入門使用和工具類封裝
阿新 • • 發佈:2020-08-10
Druid(德魯伊):阿里巴巴提供的資料庫連線池技術,是目前最好的資料庫連線池。
600+專案中使用,支援sql日誌監控
DataSource 功能 * 獲取連線: Connection getConnection() * 歸還連線: connction.close() 連線池廠商對connection物件的close()方法進行(增強),執行該方法時不是銷燬物件,而是歸還到連線池中 使用的動態代理技術進行增強的....
// 1.建立druid資料來源(連線池)物件 DruidDataSource dataSource = new DruidDataSource(); // 2.配置資料庫基本四項,建立連線,初始化連線池容器 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/web"); dataSource.setUsername("root"); dataSource.setPassword("root"); // 指定初始化個數 dataSource.setInitialSize(5);// 指定最大個數 dataSource.setMaxActive(100); // 指定低峰期個數 dataSource.setMinIdle(20); // 指定等待時間 dataSource.setMaxWait(3000); // 3.從連線池中獲得連線物件 Connection connection = dataSource.getConnection(); System.out.println(connection); // 4.歸還到連線池 connection.close(); // 此物件是druid提供的子類,實現了對close方法的增強,不再是銷燬物件,而是歸還到連線池
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/databasename username=root password=root #初始化個數 initialSize=5 #最大連線數 maxActive=10 #等待時間,毫秒 maxWait=3000 #最少連線數 minIdle=3
// 通過類載入器,載入 druid.properties檔案,獲取io流 InputStream in = DruidDemo2.class.getClassLoader().getResourceAsStream("druid.properties"); Properties properties = new Properties(); properties.load(in); // 通過druid工廠,建立druid連線池物件 DataSource dataSource = DruidDataSourceFactory.createDataSource(properties); // 從連線池獲取連線 for (int i = 1; i <= 11; i++) { Connection connection = dataSource.getConnection(); // 進行jdbc的 crud操作 System.out.println(connection); // 模擬歸還 if(i== 10){ connection.close(); } // 連線池使用詳情 System.out.println(dataSource); }
/* mybatis內建連線初始化程式碼.... */ public class JdbcUtils { // 宣告連線池物件 private static DataSource dataSource; // 1. 初始化連線池容器 static{} static { try { // 1.載入druid.properties 配置檔案 InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"); Properties properties = new Properties(); properties.load(in); // 2.通過druid的工廠,建立連線池物件 dataSource = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { throw new RuntimeException("druid連線池初始化失敗..."); } } // 2. 提供獲取連線池物件的靜態方法 public static DataSource getDataSource() { return dataSource; } // 3. 提供獲取連線物件的靜態方法 public static Connection getConnection() throws Exception { return dataSource.getConnection(); } // 4. 提供釋放資源的方法(conn物件不是銷燬,而是歸還到連線池) public static void release(ResultSet resultSet, Statement statement, Connection connection) { // 關閉ResultSet if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } // 關閉Statement if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } // 關閉Connection if (connection != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } // 方法過載 public static void release(Statement statement, Connection connection) { release(null, statement, connection); } }