Druid:数据库连接池实现技术,由阿里巴巴提供的
1.步骤:
1.导入jar包 druid-1.0.9.jar
2.定义配置文件:
* 是properties形式的
* 可以叫任意名称,可以放在任意目录下
3.加载配置文件。Properties
4.获取数据库连接池对象:通过工厂来来获取DruidDataSourceFactory
5.获取连接:getConnection
* 代码:
//3.加载配置文件
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//4.获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5.获取连接
Connection conn = ds.getConnection();
2.定义工具类
1.定义一个类 JDBCUtils
2.提供静态代码块加载配置文件,初始化连接池对象
3.提供方法
1.获取连接方法:通过数据库连接池获取连接
2.释放资源
3.获取连接池的方法
package cn.itcast.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.*;import .URL;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Objects;import java.util.Properties;/*** @author KuKaFei.Hai* @date /5/9 : 17:11*/public class JDBCDruid {//定义一个成员变量/*** 定义一个连接池变量*/private static DataSource ds;static {//加载配置文件try {//生成一个配置文件对象,这个是因为,Druid中的工厂方法,需要传一个配置文件对象Properties pro = new Properties();//加载配置文件//InputStream rs = JDBCDruid.class.getClassLoader().getResourceAsStream("druid.properties");// System.out.println(rs);pro.load(Objects.requireNonNull(JDBCDruid.class.getClassLoader().getResourceAsStream("druid.properties")));//pro.load(rs);//通过连接池工厂,创建连接池ds = DruidDataSourceFactory.createDataSource(pro);} catch (Exception e) {e.printStackTrace();}}/*** 通过连接池,获取conn 对象* @return 返回一个 Connection对象* @throws SQLException 存在异常*/public static Connection getConnectionByDruid() throws SQLException {return ds.getConnection();}/*** 获取连接池* @return 返回一个连接池对象*/public static DataSource getDataSource(){return ds;}/*** 关闭 非查询连接* @param stmt Statement* @param conn Connection*/public static void closeAll(Statement stmt,Connection conn){if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close(); // 这里不是关闭连接,而是归还到连接池中} catch (SQLException e) {e.printStackTrace();}}}/*** 关闭 查询连接* @param rs ResultSet* @param stmt Statement* @param conn Connection*/public static void closeAll(ResultSet rs,Statement stmt,Connection conn){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}closeAll(stmt,conn);}}