JDBC连接池讲解 Druid技术

本文介绍了为什么要使用JDBC连接池,重点解析阿里巴巴的Druid数据库连接池的详细步骤,包括导入jar包、配置文件设置、通过DruidDataSourceFactory获取连接池对象,以及如何使用连接池进行数据库操作。同时强调了使用Druid连接池时,关闭连接并不会真正关闭连接,而是归还给连接池。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 为什么要有JDBC连接池呢?
  • JDBC连接池是什么?

1.说在前面

JDCB众所周知:就是java老大用来操作各种数据库(比如:Mysql,orale)小弟的一个规范。但是我每次要操作一下数据库就去创建一个数据库连接然后又将其close。我是不是疯了。
所以就有了JDBC连接池的概念:数据库连接池就是一个容器,里边放了多个数据库连接对象

2.这里介绍下我们国的龙头老大 阿里巴巴的数据库连接池Druid

第一步:还是我们熟悉的导入jar包
第二步:写配置文件:druid.properties

//驱动
driverClassName=com.mysql.jdbc.Driver
//操作哪个数据库固定写法:jdbc:数据库名://IP地址:端口号/数据库名
url=jdbc:mysql://127.0.0.1:3306/students(数据库名)
//用户账号
username=root
//用户密码
password=1234
//初始化的连接数量
initialSize=5
//最大的连接数量
maxActive=10
//最大超时时间
maxWait=3000

第三步:加载配置文件进内存

		//1.使用Properties集合中的load()方法,将配置文件加载进进内存*
        Properties pps=new Properties();
        
		//2.使用类加载器获取配置文件的绝对路径并装入字节入流中(硬盘==》内存)
        ClassLoader classLoader = druidDemo1(类对象).class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("druid.properties");
        
        //3.使用load()方法
        load(is);

第四步:通过DruidDataSourceFactory 工厂类的createDataSource()方法获取数据库连接池对象啦~

//Data是是数据的意思。Source是 来源[池子] 的意思。Factory是工厂的意思。
//DruidDataSourceFactory 一起就是:Druid数据池的工厂
DataSource ds = DruidDataSourceFactory.createDataSource();

第五步:通过DataSource数据库连接池对象 的 getConnection()方法获取数据库连接对象啦~

Conndection conn = ds.getConnection();
  • ps:注意:这里的数据库连接对象 和 前面的用DriverManager驱动管理类获取的数据库连接对象是不一样的。
  • 至少这里数据库连接对象调用close()方法不是将数据库连接对象关闭,而是将 数据库连接对象 归还给:数据库连接池。(有点绕口)

第六步:写sql

String sql = "insert into 表名 (字段名) values(?,?,?)"

第七步:获取PerpareStatement对象,并给 ? 赋值 (防止sql注入).

PerpareStatement pstate = conn.perpareStatement(sql);
pstate.setXxx("int类型,写给第几个问号赋值","赋Xxx类型的值")

第八步:执行sql

pastate.executeUpdate();//execute是 执行 的意思。

第九步:归还数据库连接对象
调用close()方法

下边来个整个过程的详细代码+分析

案例:给db3的employee表添加一条记录*/
public class druidCase {
   public static void main(String[] args) {
   	//为了防止下边对象创建时抛出异常所以这里要赋值为 null 
       Connection conn = null;
       PreparedStatement pstmt = null;

       try {
           //1.获取数据库连接对象
           conn = JDBCUtils.getConnection();

           //开启事务
           conn.setAutoCommit(false);

           //2.写sql
           String sql = "insert into employee values(?,?)";

           //3.获取执行sql的对象[PreparedStatement对象在执行sql时 是不传参的。传参在获取对象时传!]
           pstmt = conn.prepareStatement(sql);

           //4.1 给 ? 赋值
           pstmt.setString(1, "zero");
           pstmt.setInt(2, 2000);
           
           //4.2 执行sql
           pstmt.executeUpdate();

           //提交
           conn.commit();

       } catch (Exception e) {
           //有异常回滚
           try {
               conn.rollback();
           } catch (SQLException e1) {
               e1.printStackTrace();
           }
           e.printStackTrace();
       } finally {
           if (stmt != null) {
               try {
                   stmt.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
           if (conn != null) {
               try {
                   conn.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
       }
   }
}

最后能祝您能快乐的学好JDBC相关知识哦~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值