Druid是阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好。它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。 支持所有JDBC兼容的数据库,包括Oracle、MySQL、Derby、Postgresql、SQL Server、H2等等。 Druid针对oracle和mysql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。简单SQL语句用时10微秒以内,复杂SQL用时30微秒。 

Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象。
1.配置文件db.properties
  1. driverClassName=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://172.19.57.246:3306/webservice?useUnicode=true&characterEncoding=utf-8
  3. username=root
  4. password=root
  5. filters=stat
  6. initialSize=3
  7. maxActive=300
  8. maxWait=60000
  9. timeBetweenEvictionRunsMillis=60000
  10. minEvictableIdleTimeMillis=300000
  11. validationQuery=SELECT 1
  12. testWhileIdle=true
  13. testOnBorrow=false
  14. testOnReturn=false
  15. poolPreparedStatements=false
  16. maxPoolPreparedStatementPerConnectionSize=200

2.JdbcUtils工具类

  1. package founder.util;
  2.  
  3. import java.io.InputStream;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.Properties;
  9.  
  10. import com.alibaba.druid.pool.DruidDataSource;
  11. import com.alibaba.druid.pool.DruidDataSourceFactory;
  12. import com.alibaba.druid.pool.DruidPooledConnection;
  13.  
  14. /**
  15. * @ClassName: JdbcUtils
  16. * @author hanwl
  17. * @date 2019年01月22日
  18. * @Description: TODO
  19. */
  20.  
  21. public class JdbcUtils {
  22.  
  23. // 工具类,私有化无参构造函数
  24. private JdbcUtils() {
  25. }
  26. private static JdbcUtils databasePool=null;
  27. private static DruidDataSource dataSource = null;
  28.  
  29. // 静态代码块,加载配置文件。
  30. static{
  31. try{
  32. InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
  33. Properties prop = new Properties();
  34. prop.load(in);
  35. dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(prop);
  36.  
  37. }catch (Exception e) {
  38. throw new ExceptionInInitializerError(e);
  39. }
  40. }
  41.  
  42. public static synchronized JdbcUtils getInstance() {
  43. if(null == databasePool){
  44. databasePool=new JdbcUtils();
  45. }
  46. return databasePool;
  47. }
  48.  
  49. /**
  50. * 创建数据库连接实例
  51. * @return 数据库连接实例 connection
  52. */
  53. public DruidPooledConnection getConnection(){
  54. try {
  55. return dataSource.getConnection();
  56. } catch (SQLException e) {
  57. e.printStackTrace();
  58. }
  59. throw new RuntimeException("获取数据库连接异常");
  60. }
  61.  
  62. /**
  63. * 关闭数据库连接实例
  64. */
  65. public static void releaseSqlConnection(ResultSet rSet, PreparedStatement pStatement,PreparedStatement iStatement, Connection connection) {
  66. try {
  67. if (rSet != null) {
  68. rSet.close();
  69. }
  70. } catch (SQLException e) {
  71. e.printStackTrace();
  72. } finally {
  73. try {
  74. if (pStatement != null) {
  75. pStatement.close();
  76. }
  77. if(iStatement!=null){
  78. iStatement.close();
  79. }
  80. } catch (SQLException e) {
  81. e.printStackTrace();
  82. } finally {
  83. try {
  84. if (connection != null) {
  85. connection.close();
  86. }
  87. } catch (SQLException e) {
  88. e.printStackTrace();
  89. }
  90. }
  91. }
  92. }
  93.  
  94. }
 
 

com.alibaba.druid数据源工具类的更多相关文章

  1. Druid数据库连接池工具类

    package cn.itcast.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSo ...

  2. JDBC操作数据库工具类(使用阿里Druid原生API创建数据源)

    1.数据库配置类 package com.zdlt.auth.api.common.druid; import java.util.Properties; import static com.alib ...

  3. Druid 连接池 JDBCUtils 工具类的使用

    Druid工具介绍 它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. 支持所有JDBC兼容的数据库,包括Oracle.MySQL. ...

  4. Druid连接池工具类

    package cn.zmh.PingCe; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSo ...

  5. 基于Druid数据库连接池的DBUtil工具类

    工具类 DruidUtil.java package com.zzuli.util; import com.alibaba.druid.pool.DruidDataSourceFactory; imp ...

  6. json工具类(一)——alibaba包

    package com.ruoyi.common.utils.json; import java.util.HashMap; import java.util.List; import java.ut ...

  7. 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用

    思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...

  8. Alibaba Java诊断工具Arthas查看Dubbo动态代理类

    原创/朱季谦 阅读Dubbo源码过程中,会发现,Dubbo消费端在做远程调用时,默认通过 Javassist 框架为服务接口生成动态代理类,接着再去调用代理类实现远程接口调用.在阅读这部分源码时,最后 ...

  9. 阿里巴巴高新能数据源com.alibaba.druid.pool.DruidDataSource的jar包配置

    aspectjweaver-1.7.4.jar druid-0.2.9.jar 两个包,用于提供com.alibaba.druid.pool.DruidDataSource

随机推荐

  1. 升级Mac OS X上的git

    今天一打开visual studio code就提示我git版本low,需要升级,然后提供了一个下载链接(git官方下载地址:https://git-scm.com/),然后我就根据链接去下载了mac ...

  2. 第五篇Scrum冲刺博客

    一.Daily Scrum Meeting照片 二.每个人的工作 成员 ItemID 已完成工作 明天计划完成的工作 遇到的困难 张鸿 o1 整合界面至游戏中 将其他剩余功能进行整合 游戏状态的切换 ...

  3. 【SpringBoot笔记】SpringBoot整合Druid数据连接池

    废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency> <groupId>com.alib ...

  4. jQuery字母大小写转换函数

    toLowerCase() ------ 将字符串中的所有字符都转换成小写: toUpperCase() ------ 将字符串中的所有字符都转换成大写:

  5. activemq读取剩余消息队列中消息的数量

    先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968  ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...

  6. react this的作用域问题,麻烦大佬们帮我解决一下

    element里面有个Table组件,我想在编辑和删除那里加上点击事件,但是发现点击方法没有效果 这里面的this看起来好像只针对这个作用域里面的,这里没有办法设置状态,也不能调用方法 设置状态会出现 ...

  7. Web框架本质及第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  8. vue 项目中当访问路由不存在的时候默认访问404页面

    前言: 在Vue项目中,当访问的页面路由不存在或错误时,页面显示为一片空白.然而,通常我们需要对访问url不存在或者错误的情况下添加默认的404页面,即not found页面. 一般的处理方法是: 在 ...

  9. 这可能是最简单的Page Object库

    做过web自动化测试的同学,对Page object设计模式应该不陌生. Page object库应该根据以下目标开发: Page object应该易于使用 清晰的结构 PageObjects 对于页 ...

  10. springmvc源码分析——入门看springmvc的加载过程

    本文将分析springmvc是如何在容器启动的时候将各个模块加载完成容器的创建的. 我知道在web.xml文件中我们是这样配置springmvc的: 可以看到,springmvc的核心控制器就是Dis ...