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; } }