zoukankan      html  css  js  c++  java
  • 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;
        }
    }
        
  • 相关阅读:
    datagridview 批量更新、日期设置、指定列弹出右键菜单
    CAD ObjectARX扩展工具的源码(二)
    ObjextARX-VS2005-字符串转换
    二叉搜索树(二叉查找树)
    贪婪算法-货物装载问题
    Messagebox.Show()常用参数的讨论
    关于矩形排样问题(三)
    单纯形法实现一维管材排料最优化
    [转载]共享一些常用的代码
    转载]取硬盘ID的API实现
  • 原文地址:https://www.cnblogs.com/ZXF6/p/11048179.html
Copyright © 2011-2022 走看看