1. 程式人生 > 其它 >JavaWeb6.2【Druid資料庫連線池技術、Druid連線池工具類】

JavaWeb6.2【Druid資料庫連線池技術、Druid連線池工具類】

 1 package com.haifei.datasource.druid;
 2 
 3 import com.alibaba.druid.pool.DruidDataSourceFactory;
 4 
 5 import javax.sql.DataSource;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.sql.Connection;
 9 import java.util.Properties;
10 
11 /*
12 資料庫連線池
13 
14 5 Druid:資料庫連線池技術,由阿里巴巴提供
15 16 1. 步驟: 17 1. 匯入jar包 druid-1.0.9.jar 18 不要忘記還需要資料庫驅動jar包mysql-connector-java-5.1.37-bin.jar 19 2. 定義配置檔案: 20 * 是properties形式的 21 * 可以叫任意名稱,可以放在任意目錄下 22 3. 利用Properties集合類載入配置檔案 23 4. 獲取資料庫連線池物件:通過工廠來來獲取 DruidDataSourceFactory
24 5. 獲取連線:getConnection 25 26 2. 定義工具類 27 1. 定義一個類 JDBCUtils 28 2. 提供靜態程式碼塊載入配置檔案,初始化連線池物件 29 3. 提供方法 30 1. 獲取連線方法:通過資料庫連線池獲取連線 31 2. 釋放資源 32 3. 獲取連線池的方法 33 */ 34 public class DruidDemo1 { 35 public static void main(String[] args) throws
Exception { 36 //3 載入配置檔案 37 Properties prop = new Properties(); 38 InputStream is = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties"); 39 prop.load(is); 40 41 //4 利用工廠來獲取連線池物件 42 DataSource ds = DruidDataSourceFactory.createDataSource(prop); 43 44 //5 獲取連線物件 45 Connection conn = ds.getConnection(); 46 System.out.println(conn); //com.mysql.jdbc.JDBC4Connection@13b6aecc 47 } 48 }
  1 package com.haifei.utils;
  2 
  3 import com.alibaba.druid.pool.DruidDataSourceFactory;
  4 
  5 import javax.sql.DataSource;
  6 import javax.xml.crypto.Data;
  7 import java.io.IOException;
  8 import java.sql.Connection;
  9 import java.sql.ResultSet;
 10 import java.sql.SQLException;
 11 import java.sql.Statement;
 12 import java.util.Properties;
 13 
 14 /**
 15  * Druid連線池工具類
 16  *  後期開發主用
 17  */
 18 public class JDBCUtils {
 19 
 20 
 21     //定義成員變數
 22     private static DataSource ds;
 23 
 24     //靜態程式碼塊
 25     static {
 26         try {
 27             //1 載入配置檔案
 28             Properties prop = new Properties();
 29             prop.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
 30 
 31             //2 獲取DataSource物件
 32             ds = DruidDataSourceFactory.createDataSource(prop);
 33         } catch (IOException e) {
 34             e.printStackTrace();
 35         } catch (Exception e) {
 36             e.printStackTrace();
 37         }
 38     }
 39 
 40 
 41     /**
 42      * 獲取連線物件
 43      * @return
 44      * @throws SQLException
 45      */
 46     public static Connection getConnection() throws SQLException {
 47         return ds.getConnection();
 48     }
 49 
 50 
 51     /**
 52      * 釋放資源
 53      * @param stmt
 54      * @param conn
 55      */
 56     public static void close(Statement stmt, Connection conn){
 57         /*if (stmt != null){
 58             try {
 59                 stmt.close();
 60             } catch (SQLException e) {
 61                 e.printStackTrace();
 62             }
 63         }
 64 
 65         if (conn != null){
 66             try {
 67                 conn.close(); //此處實質不是釋放資源,而是將連線物件歸還給連線池
 68             } catch (SQLException e) {
 69                 e.printStackTrace();
 70             }
 71         }*/
 72 
 73         close(null, stmt, conn);
 74     }
 75 
 76 
 77     /**
 78      * 釋放資源
 79      * @param rs
 80      * @param stmt
 81      * @param conn
 82      */
 83     public static void close(ResultSet rs, Statement stmt, Connection conn){ //過載
 84         if (rs != null){
 85             try {
 86                 rs.close();
 87             } catch (SQLException e) {
 88                 e.printStackTrace();
 89             }
 90         }
 91 
 92         if (stmt != null){
 93             try {
 94                 stmt.close();
 95             } catch (SQLException e) {
 96                 e.printStackTrace();
 97             }
 98         }
 99 
100         if (conn != null){
101             try {
102                 conn.close(); //此處實質不是釋放資源,而是將連線物件歸還給連線池
103             } catch (SQLException e) {
104                 e.printStackTrace();
105             }
106         }
107     }
108 
109 
110     /**
111      * 獲取連線池物件
112      * @return DataSource ds
113      */
114     public static DataSource getDataSource(){
115         return ds;
116     }
117 }
 1 package com.haifei.datasource.druid;
 2 
 3 import com.haifei.utils.JDBCUtils;
 4 
 5 import java.sql.Connection;
 6 import java.sql.PreparedStatement;
 7 import java.sql.SQLException;
 8 
 9 /*
10 測試新的JDBCUtils:Druid連線池工具類
11 
12     需求:給account表新增一條記錄
13  */
14 public class DruidDemo2 {
15     public static void main(String[] args) {
16 
17         Connection conn = null;
18         PreparedStatement pstmt = null;
19 
20         try {
21             //1 獲取連線conn物件
22             conn = JDBCUtils.getConnection();
23 
24             //2 定義sql
25             String sql = "insert into account values(null, ?, ?)";
26 
27             //3 獲取執行sql的pstmt物件
28             pstmt = conn.prepareStatement(sql);
29 
30             //4 給sql中的?賦值
31             pstmt.setString(1, "wangwu");
32             pstmt.setDouble(2, 3000);
33 
34             //5 執行sql
35             int count = pstmt.executeUpdate();
36             System.out.println(count); //1
37 
38         } catch (SQLException e) {
39             e.printStackTrace();
40         } finally {
41             JDBCUtils.close(pstmt, conn);
42         }
43 
44     }
45 }