1.导入jar包

druid-1.0.9.jar
导入数据库驱动jar包

2.定义配置文件
  properties形式
  可以叫任意名称,可以放置在任意目录下。(意味着不能自动加载,需要手动导入)
3.加载配置文件 properties
4.获取数据库连接池对象:通过工厂类来获取
5.获取连接:getConnection

配置文件
jar包
文档
源码


基本使用

package cn.itcust.datasource.druid;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties; /**
* Druid演示
*/
public class DruidDemo1 {
public static void main(String[] args) throws Exception {
//1.导如jar包
//2.定义配置文件 //3.加载配置文件
// 创建配置文件的对象
Properties pro = new Properties(); //用getClassLoader().getResourceAsStream直接返回字节输入流
InputStream is = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties"); //用load加载文件,并且还会把属性值装载到集合
pro.load(is); //4.获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro); //5.获取数据库连接
Connection conn = ds.getConnection(); System.out.println(conn);
}
}
package cn.itcust.datasource.druid;

import cn.itcust.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 {
//1.获取连接对象
conn = JDBCUtils.getConnection();
//2.定义SQL
String sql = "insert into user values(null,?,?)";
//3.获取pstmt对象
pstmt = conn.prepareStatement(sql);
//给问号赋值
pstmt.setString(1, "dawang");
pstmt.setString(2, "789");
//4.执行SQL
int count = pstmt.executeUpdate();
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(pstmt,conn);
}
}
}

定义工具类,简化操作

原因:连接池只有需要一个
不定义就会非常麻烦

1.定义一个工具类 JDBCUtils
2.提供静态代码块,加载配置文件,初始化连接池对象 
3.提供方法
1.获取连接方法:通过数据库连接池来获取连接对象
2.释放资源
3.获取连接池的方法(有的工具类、小框架里,只需要连接池不需要连接对象,会自己调用连接池的方法)

package cn.itcust.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; /**
* Druid连接池的工具类
*/
public class JDBCUtils {
//定义一个成员变量 Datasoutce
private static DataSource ds; //初始化,赋值
static {
try {
//1.加载配置文件,先创建配置文件对象
Properties pro = new Properties();
//2.通过load方法加载
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//3.获取连接池
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){
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();//归还数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 还有一种简化的操作
* 两个参数也调用三个参数的方法,第一个不给值就行了
* */
// public static void 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.jdbc.Driver #数据库连接地址
url=jdbc:mysql:///db4 #用户名
username=root #密码
password=ROOT #初始化连接数量
initialSize=5 #最大连接
maxActive=10 #最大等待时间
maxWait=3000

Druid连接技术的更多相关文章

  1. 【Java】java数据库连接中C3P、DBCP、Druid连接池的使用

    使用JDBC的步骤:1.加载数据库驱动2.通过DriverManager获得数据库连接3.通过Connection获得Statement对象4.使用Statement执行SQL语句.5.操作结果集合6 ...

  2. Java开发笔记(一百五十一)Druid连接池的用法

    C3P0连接池自诞生以来在Java Web领域反响甚好,业已成为hibenate框架推荐的连接池.谁知人红是非多,C3P0在大型应用场合中暴露了越来越多的局限性,包括但不限于下列几点:1.C3P0管理 ...

  3. Druid连接池(无框架)

    关于连接池有不少技术可以用,例如c3p0,druid等等,因为druid有监控平台,性能在同类产品中算top0的.所以我采用的事druid连接池. 首先熟悉一个技术,我们要搞明白,为什么要用他, 他能 ...

  4. Spring整合JDBC和Druid连接池

    我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...

  5. druid连接池获取不到连接的一种情况

    数据源一开始配置: jdbc.initialSize=1jdbc.minIdle=1jdbc.maxActive=5 程序运行一段时间后,执行查询抛如下异常: exception=org.mybati ...

  6. 使用druid连接池的超时回收机制排查连接泄露问题

    在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: ...

  7. comet基于HTTP长连接技术(java即时通信,推送技术详解)

    服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...

  8. Druid连接池

    Druid 连接池简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.J ...

  9. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)

    在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...

随机推荐

  1. 【01】HTML_day01_01-前言&WEB标准

    typora-copy-images-to: media 第01阶段.前端基础.认识WEB 基础班学习目标 目标: 能根据psd文件,用HTML+CSS 布局出符合W3C规范的网页. 网站首页 列表页 ...

  2. Linux学习记录(一):常用命令

    此篇文章为博主在Linux学习过程中的一些记录,记录在此方便查阅. 常用命令总结 ls 显示目录内容 (list directory contents) ls 不显示隐藏的文件和子目录 ls -a 显 ...

  3. findContours()函数

    函数原型 findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int m ...

  4. idea 工具 听课笔记 首页

    maven 创建 javaWeb站点结构标准及异常权限调整 解决Intellij Idea下修改jsp页面不自动更新(链接 idea中使用github  提交 idea 从github.com上恢复站 ...

  5. php根据字段相识度进行排序查询

    $data = [ [ 'id'=>1, 'title'=>'test内容管理系统', ], [ 'id'=>2, 'title'=>'开源test', ], [ 'id'=& ...

  6. 用ArcGIS Runtime for Android建立简单App,展示地图

    1.新建AS项目 此处引用官网上新建项目的过程,很简单,不做翻译了. 2.配置ArcGIS Runtime for Android100.5.0环境 2-1.项目切换成Project 2-2 .选择P ...

  7. 基于java开发jsp+ssm+mysql实现的在线考试系统 源码下载

    实现的关于在线考试的功能有:用户前台:用户注册登录.查看考试信息.进行考试.查看考试成绩.查看历史考试记录.回顾已考试卷.修改密码.修改个人信息等,后台管理功能(脚手架功能不在这里列出),科目专业管理 ...

  8. Socket通讯探索(二)-socket集群

    前面我们在章节“Socket通讯探索(一)”中如何实现一个tcp连接,但是这仅仅是一个最初级的BIO实现,且没有添加线程池,实际应用中很少采用这种方式,因为不得不考虑当大量的Tcp连接建立的时候,服务 ...

  9. 战“疫”背后的AI身影丨曼孚科技

    近期新型冠状病毒肺炎的疫情,牵动着全国上下人民的心. 截止2月11日上午10点,全国确诊人数已达42708人,疑似病例21675人. 突发的疫情让部分地区的快速诊疗能力出现了结构性的缺失,为了打赢这场 ...

  10. JS阻止事件冒泡与浏览器默认行为

    阻止冒泡 W3C的方法是e.stopPropagation() IE是e.cancelBubble = true; 阻止默认行为 W3C的方法e.preventDefault(), IE是e.retu ...