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;
    }
}
    
原文地址:https://www.cnblogs.com/ZXF6/p/11048179.html