DruidDataSource的介绍

  • 介绍
    DruidDataSource是Druid数据库连接池的一种实现。它是一个Java数据库连接池,用于连接JDBC数据源。 DruidDataSource提供了一些高级功能,比如防御SQL注入攻击,监控和统计信息,高效的空闲连接回收等。 DruidDataSource使用了高效的算法来管理数据库连接,可以提高数据库的性能。 DruidDataSource的配置简单,常用的配置参数有数据库连接URL,用户名,密码,最大连接数等。

  • 代码示例

      import com.alibaba.druid.pool.DruidDataSource;
      public class DruidTest {
          public static void main(String[] args) {
              // 创建Druid数据源
              DruidDataSource dataSource = new DruidDataSource();
              // 设置数据库连接URL
              dataSource.setUrl("jdbc:mysql://localhost:3306/test");
              // 设置数据库用户名
              dataSource.setUsername("root");
              // 设置数据库密码
              dataSource.setPassword("root");
              // 设置连接池的初始连接数
              dataSource.setInitialSize(5);
              // 设置连接池的最大连接数
              dataSource.setMaxActive(10);
              // 设置连接池的最小空闲连接数
              dataSource.setMinIdle(3);
              // 设置连接池的最大空闲连接数
              dataSource.setMaxIdle(5);
              // 设置连接池的最大等待时间
              dataSource.setMaxWait(5000);
              // 设置连接池的验证查询语句
              dataSource.setValidationQuery("select 1 from dual");
              // 设置连接池的验证查询超时时间
              dataSource.setValidationQueryTimeout(3000);
              // 启用监控统计功能
              dataSource.setUseGlobalDataSourceStat(true);
              // 启用连接泄露自动检测
              dataSource.setRemoveAbandoned(true);
              // 设置连接泄露检测时间
              dataSource.setRemoveAbandonedTimeout(60);
              // 设置连接泄露检测回收资源
              dataSource.setLogAbandoned(true);
              try {
                  // 初始化连接池
                  dataSource.init();
                  // 使用连接池获取连接
                  Connection conn = dataSource.getConnection();
                  // 执行数据库操作
                  Statement stat = conn.createStatement();
                  ResultSet rs = stat.executeQuery("SELECT * FROM user");
                  while(rs.next()) {
                  System.out.println(rs.getString("name"));
                  }
                  // 关闭连接
                  rs.close();
                  stat.close();
                  conn.close();
                  } catch (SQLException e) {
                  e.printStackTrace();
                  } finally {
                  // 关闭连接池
                  dataSource.close();
                  }
                  }
                  }
    
请使用浏览器的分享功能分享到微信等