JDBC连接池

mac2022-06-30  96

JDBC连接池 概念:存放数据库连接的容器。 好处:节约资源 高效访问。 实现: 1.标准接口DataSource javas.sql包下 方法: 获取连接:getConnection() 归还连接:对象Connection是从连接池中获取的,那么调用Connection.close()方法,就不会关闭连接而是归还连接 。 2.由数据库厂商来实现 C3P0:数据库连接池技术 Druid:阿里提供的数据库连接池技术

C3P0:数据库连接池技术 步骤: 1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar 2.定义配置文件 名称:c3p0.properties 或者 c3p0-config.xml 路径:直接将文件放在src目录下即可 3.创建数据库连接池对象 ComboPooledDataSource 4.获取连接 getConnection

Druid 数据库连接池技术 步骤 1.导入jar包 druid-1.1.9.jar 2.定义配置文件 是properties形式的 可以叫任意名称 存放任意目录 3.加载配置文件 4.获取数据库连接池对象,通过工厂类来获取 5.获取连接 getConnection 定义工具类 1.定义一个类 JDBCUtils 2.提供静态代码块加载配置文件,初始化连接池对象 3.提供方法 1.获取连接的方法:通过数据库连接池获取 2.释放资源 3.获取连接池的方法

1测试

package cn.pcl.datasource.druid; import cn.pcl.datasource.utils.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * 使用工具类 */ public class DruidDemo2 { public static void main(String[] args) { //获取连接 Connection conn = null; PreparedStatement pstmt = null; { try { //获取连接 conn = JDBCUtils.getConnection(); //定义sql String sql = "insert into dept values(?,?,?)"; //获取pstmt对象 pstmt = conn.prepareStatement(sql); //赋值 pstmt.setInt(1,50); pstmt.setString(2, "战略部"); pstmt.setString(3,"南京"); //执行sql int count = pstmt.executeUpdate(); System.out.println(count); } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(pstmt,conn); } } } }

2工具类定义

package cn.pcl.datasource.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtils { //定义成员变量 DataSource private static DataSource ds; static { try { //1.加载配置文件 Properties pro = new Properties(); pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //获取连接池对象 ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 获取连接 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } /** * 释放资源 */ public static void close(Statement stmt, Connection conn){ close(null,stmt,conn); } public static void close(ResultSet rs,Statement stmt, Connection conn){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 获取连接池方法 */ public static DataSource getDataSource(){ return ds; } }

配置文件

driverClassName = com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf-8&userSSL=false&serverTimezone=GMT+8 username = root password = root initialSize = 5 maxActive = 10 maxWait = 3000

Spring JDBC Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发 步骤 1.导入jar包 2.创建JdbcTemplate对象,依赖于数据源DataSource JdbcTemplate template = new JdbcTemplate(ds) 3.调用JdbcTemplate的方法来完成CRUD的操作 update(): 执行DML语句 增删改语句 queryForMap() :将查询结果集封装为map集合 queryForList():查询结果,将结果集封装为list集合 query():查询结果,将结果封装为JavaBean对象 queryForObject,查询结果,将结果封装为对象

最新回复(0)