#day07 JDBC回顾
##JDBC的概述
* JDBC 数据库的连接 Java DataBase Connectivity
* JDBC的开发步骤
* 注册驱动
* 获得连接
* 获得执行sql语句的对象
* 获得结果
* 处理结果
* 释放资源
##@test简介
* 替代main方法
* 特点
* 可以直接通过结果颜色确定我们的代码有没有问题
* 一个类中可以有多个测试方法,没有干扰
* 注意事项:
* 不能有返回值 也不能有参数列表
##JDBC常用API
* Connection
```
创建执行SQL的对象
createStatement();
prepareStatement(sql);
```
* Statement
```
执行SQL语句
executeQuery(sql)查 返回结果集
executeQuery(sql)增删改 返回int
execute(sql)增删改查 返回boolean
执行批处理(多条执行)
addBarche(sql);
clearBatch()
```
* resultset
```
getXXX( "列名" );获得结果集中的数据
next();
```
##JDBC的元数据
* DatebaseMetaData:获得数据库连接的信息,获得数据库表的信息
* `Connection中的 getMetaData()方法`
* ParameterMetaData:获得SQL中的参数的个数和类型
* `PreparedStatement中的 getParameterMetaData()方法`
* `得到参数个数 getParmeterCount()`
* ResultSetMetaData:获得结果集中的列名和列的类型
* `ResultSet中的getMetaDate()方法`
##自定义连接池中问题及如何解决】
* 问题?
* 1.如果使用自定义连接池,那么需要额外记住自定义连接池中的API.
* 能不能使用面向接口的编程方式.
* 解决:
* 不额外提供API方法,就可以解决上述两个问题!!!
* 能不能还调用Connection的close方法.能不能增强Connection的close方法,原有的销毁变为归还!!!
* 增强一个Java类中的某个方法有几种方式???
```
* 一种方式:继承的方式. 实用性差
* 能够控制这个类的构造的时候,才可以使用继承.
* 二种方式:装饰者模式方式.
* 包装对象和被包装的对象都要实现相同的接口.
* 包装的对象中需要获得到被包装对象的引用.并维护 private
***** 缺点:如果接口的方法比较多,增强其中的某个方法.其他的功能的方法需要原有调用.
* 三种方式:动态代理的方式.
* 被增强的对象实现接口就可以.
```
##装饰者模式方式.
为了增强某类的功能
* 步骤
* 创建装饰类实现相同接口
* 有参构造 传入被包装的对象 私有 重写增强
* 为什么实现接口?
* 保证被装饰者 类的功能的完整性
* 缺点
* 如果接口的方法比较多,增强其中的某个方法.其他的功能的方法需要原有调用
* 解决
* 适配器模式 解决了多方法的重写
* 创建类 抽取其他的方法
##常见的开源的数据库连接池
* DBCP
* C3P0
* Tomcat位置连接池
##DBCP的使用
* 导入jar包
* 构建路径
* ......
##C3P0的使用
* 第一步:引入C3P0连接池的jar包.
* 第二步:编写代码:
* 手动设置参数:
* 配置文件设置参数:
|
|