JDBC连接池和DButils

【DBCP连接池工具类】

使用读取配置文件的方式

DBCP中有一个工厂类 BasicDataSourceFactory
工厂类中有一个静态方法

返回值为: DataSource createDataSource(Properties prop)

此方式返回的就是DataSource接口的实现类对象 BasicDataSource

创建properties集合+IO技术读取配置文件
把配置文件传入BasicDataSourceFactory 静态方法 createDataSource中

实现步骤:

1.创建properties集合+IO技术读取配置文件
2.使用类加载器,扫描包下的文件
InputStream 变量名 = DBCPUtilsReadConfig.class.getClassLoader().getResourceAsStream("传入配置文件名称")
3.创建properties集合
Properties prop = new Properties();
prop.load(is);
4.把配置文件传入 BasicDataSourceFactory静态方法 createDataSource中
DataSource 变量名= BasicDataSourceFactory.createDataSource(prpo)

【C3P0连接池的工具类】

连接规范接口 : java.sql.DataSource

接口的实现类对象 : ComboPooledDataSource

成员位置创建 : ComboPooledDataSource对象

实现代码: private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

C3P0内部会自动扫描并解析xml文件,给ComboPooledDataSource设置数据量的四大信息

创建一个返回ComboPooledDataSource的方法

public static DataSource getDataSource(){
return dataSource;
}

创建一个静态方法返回Connection对象

实现代码: public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("获取数据库连接信息失败!");
}
}

创建一个静态方法释放资源

【DBUtils工具类】

DBUtils工具类作用:简化JDBC的发开(六步)

DBUtils有3个核心类

1.QueryRunner : 使用QueryRunner中的方法对数据库进行增删改查

2.DbUtils : 提供了大量的释放资源的方法

3.ResultSetHandler接口 : 提供了处理查询结果集的方法

●QueryRunner 类 :

构造方法: QueryRunner() 空参数构造方法

调用跟新和查询方法的时候,需要传入Connection对象

QueryRunner( DataSource ds) 带DataSource数据库连接池的构造方法

调用跟新和查询方法的时候QueryRunner会自动从DataSource实现类对象中获取数据库连接对象,使用完毕后自动归还.

成员方法: 执行增删改的成员方法

返回值: int update(Connection conn , String sql ,Object ... params) 用来执行增删改的SQL

返回值: int update(String sql , Object ... params) 用来执行增删改的SQL

参数 :

Connection conn : 数据库连接对象

String sql : 拼接的sql语句,可以使用 ? 占位符

Object...params : ?占位符的实际参数,可以使用Object[]
返回值: int 执行的有效行数

执行查询的成员方法:

返回值 : <T> T query(Connection conn , String sql , ResultSetHandier<T> rsh , Object...params)

<T> T query(String sql , ResultSetHandler<T> rsh , Object ... params)

参数: Connection conn : 数据库连接对象

String sql:拼接的sql语句,可以使用?占位符

Object...params : ?占位符的实际参数,可以使用Object[]

ResulSetHasndier<T> rsh : 用来存储查询之后的结果集,可以传入ResulSetHasndier 9种实现类对象

返回值 : <T> T :传入的ResltSetHandler实现类不同,返回的结果集也不同,使用泛型,传入什么结果集,就返回对应的类型

我的学习之路_第二十一章_JDBC连接池的更多相关文章

  1. 我的学习之路_第二十三章_HTML

    Html : 超级文本语言 ( Hyper text Markup Language ) HTML 文件扩展名是 * .html HTML 结构都是有标签组成 通常情况下标签有开始标签和结束标签组成 ...

  2. 我的学习之路_第二十七章_jQuery

    jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs [jQuery入门] jQuery的引入: 通过script标签的src属性引入 入门: 获取 ...

  3. 我的学习之路_第二十章_JDBC

    JDBC 使用JDBC技术,通过mysql提供的驱动程序,操作数据库 ● 1. 注册驱动 告知jvm 使用的是什么驱动程序(mysql,oracle) 使用API中的类 DriverManager中的 ...

  4. 我的学习之路_第二十五_javaScript

    Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...

  5. 我的学习之路_第二十八章_JQuery 和validator插件

    jQuery 利用jQuery进行遍历 js原生: for(var i=0;i>?;i++){ } jQuery: 方式一: 想要遍历的jQuery对象.each(function(index, ...

  6. 我的学习之路_第二十九章_bootstrap

    bootstrap 内置了html,css,js插件为一体的前端框架 响应式布局: 设计一套页面就可以使用于很多现实设备 bootstrap: 1.入门(响应式布局的容器) 1.先进入jQuery的j ...

  7. 我的学习之路_第五章_Data,正则

    Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION) 学习目标 ...

  9. “全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. 【WPF】获取电磁笔的压感

    WPF 不仅支持触控,也支持笔的输入,比如现在比较高大上的电磁笔.便宜的板子一般不配备电磁笔,而是配电容笔,虽然也号称XXX级压感,但是效果自然不可与电磁笔相比. UIElement 类规范了UI元素 ...

  2. 源码浅谈(一):java中的 toString()方法

    前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> ...

  3. Vbs脚本实现radmin终极后门

    Vbs脚本实现radmin终极后门 代码如下: on error resume next const HKEY_LOCAL_MACHINE = &H80000002 strComputer = ...

  4. Redis学习-LUA脚本

    最近在做K线的项目中,需要计算商品的分时数据.为了保证多台机器对同一商品的计算的有序性,所以在Redis中进行计算,同时为了保证在分时数据计算过程的原子性所以使用了LUA脚本,Redis内置了对LUA ...

  5. NIO Socket编程实例

    1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter. package IO; import java.io.BufferedReader; ...

  6. Python: import vs from (module) import function(class) 的理解

    Python: Import vs From (module) import function(class) 本文涉及的 Python 基本概念: Module Class import from . ...

  7. 【JAVAWEB学习笔记】21_多条件查询、attr和prop的区别和分页的实现

    今天主要学习了数据库的多条件查询.attr和prop的区别和分页的实现 一.实现多条件查询 public List<Product> findProductListByCondition( ...

  8. 【PHP】文件写入和读取详解

    文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...

  9. 分布式Java应用与实践 (一)

    一) 分布式Java应用 1.1 基于消息方式实现系统间的通信 数据传输 TCP/IP 可靠的网络传输协议,首先给通信双方建立链接之后再进行数据传输,保证链接及数据传输的可靠,因此会牺牲一些性能 UD ...

  10. struts2.1.6教程六、使用标签

    1.基础表单标签 准备工作:建立struts2tag项目,搭建好struts2的开发环境.在html我们常用的基础表单标签主要有文本域.密码域.提交.重置四种.它们在strust2中可以通过标签来生成 ...