JDBC 連接DRUID 連接池!


一、1.創建一個floder目錄,【名稱lib】 

  2. 導入mysql.jar包和 druid.jar 包。---------->bulid path  

 

 

二、創建  sourcefolder 目錄!【sourcefloder】

將配置文件放到里面(這種類型的文件夾和普通文件夾不一樣,sourcefloder文件夾能將里面的東西編譯到輸出目錄,而普通文件夾不會編譯

展示配置文件

 

三、通過連接池來連接JDBC,更改Util工具中的  getConnection!

 

 四、總的展示。

package com.aaa.util;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

/**
 * BaseDao 利用Druid連接池  連接數據庫
 * 
 * 通過連接池,不用每次都建立連接對象和關閉資源,節省資源。
 * 需要
 * 1.導入druid包  
 * 2.創建一個source floder文件夾  將配置文件 druid.properties  放在里面。 
 */
public class BaseDAO {
    
    private static DataSource source=null;//注意這里是私有,靜態變量。
    
    
    static {//這里還是之前的加載驅動
        Properties p = new Properties();
        try {
            //加載文件  得到一個  druid.properties 的文件。
            p.load(BaseDAO.class.getClassLoader().getResourceAsStream("druid.properties"));
            
            //獲取數據源  
            source=DruidDataSourceFactory.createDataSource(p);
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    //建立連接
    public static Connection getConnetion() {
        try {
            //利用連接池連接對象
            Connection con = source.getConnection();
            return con;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;    
    }
    
    //    DML 增刪改的通用
    public static int exectueUpdate(String sql,Object...args) {
        Connection con=null;
        PreparedStatement ps=null;
        
        try {
            con = BaseDAO.getConnetion();
            ps=con.prepareStatement(sql);
            
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i+1, args[i]);
            }
            
            int i = ps.executeUpdate();
            
            return i;
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            try {
                if (ps!=null) {
                    ps.close();
                }
                if (con!=null) {
                    con.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
            
        return 0;    
    }
    
    
    //DQL 查詢的通用
    public static List<Map<String, Object>> executeQuery(String sql,Object...args) {
        Connection con=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        
        try {
            con = BaseDAO.getConnetion();  //注意這里是用source 來調用 getConnetion ,不再是通過BaseDAO
            ps = con.prepareStatement(sql);
            
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i+1, args[i]);
            }
            
            rs = ps.executeQuery();
            
            int count = rs.getMetaData().getColumnCount();
            
            List<Map<String, Object>> list=new ArrayList<>();
            while (rs.next()) {
                Map<String, Object>map=new HashMap<>();
                
                for (int i = 0; i < count; i++) {
                    Object values = rs.getObject(i+1);
                    String countName = rs.getMetaData().getColumnLabel(i+1);
                    map.put(countName, values);
                }
                
                list.add(map);
                
            //    System.out.println(list);    
            }
            for (Map<String, Object> map : list) {
                System.out.println(map);
            }
            
            return list;    
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        
        return null;
    }
}
    

 


免責聲明!

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



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