1 连接池

1.1 什么是连接池?

之前jdbc步骤: 获取连接 -> 得到Statement-> 发送sql -> 关闭连接

通讯录系统:

CURD  四次

问题: 获取连接对象需要消耗比较多的资源,而每次操作都要重新获取新的连接对象,执行一次操作就把连接关闭,这样连接对象的使用效率并不高!!!

 

办法: 能不能让连接对象反复使用???如果可以的话,连接对象使用率提高!

这就可以用连接池实现!!

2 连接池工具

2.1 DBCP连接池

DBCP: DataBase Connection Pool

特点:

1Apache旗下的软件,开源连接池
2Tomcat的服务器的连接池默认实现

使用步骤:

1)导入dbcpjar

commons-dbcp-1.4.jar  核心包

commons-pool-1.5.6.jar 辅助包

2)创建连接池对象BasicDataSource对象

3)设置连接参数(urluserpassworddirverClass

4)设置连接池参数(初始连接数,最大连接数,最大等待时间)

5)获取连接对象(getConnection() 方法)

方式一:

1.创建连接池对象

BasicDataSource ds = new BasicDataSource();

2.设置连接参数

3.设置连接池参数

初始连接数

最大连接数

超过最大连接数时,最大等待时间

最大空闲时间

4.获取连接

 

 

方式二:使用配置文件加载

1)配置文件(dbcp.properties)

 

url=jdbc:mysql://localhost:3306/day19

username=root

password=root

driverClassName=com.mysql.jdbc.Driver

 

initialSize=5

maxActive=8

maxWait=3000

maxIdle=3000

 

2)程序

1.读取配置文件 Properties 对象

2.创建连接池对象

BasicDataSource ds = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);

3.获取连接

conn.close() 释放连接(不是真正的关闭连接对象,而是把连接对象放回连接池)

2.2 C3P0连接池

特点:

1)开源连接池

2Hibernate框架,默认推荐使用C3P0作为连接池实现

使用步骤:

1)导入c3p0jar

c3p0-0.9.1.2.jar 核心包

2)创建连接池对象ComboPooledDataSource对象

3)设置连接参数(urluserpassworddirverClass

4)设置连接池参数(初始连接数,最大连接数,最大等待时间)

5)获取连接对象(getConnection() 方法)

方式一:

ComboPooledDataSource ds = new ComboPooledDataSource();

ds设置参数

setInitialPoolSize();//初始化连接数

setMaxPoolSize();//最大连接数

setCheckoutTimeout();//最大等待时间

setMinPoolSize(); //最小连接数

 

方式二

使用配置文件方式读取参数信息

注意: c3p0会默认查询类路径的c3p0-config.xml文件,文件名不能错!!

1.创建连接池对象(方式一: 使用默认配置(default-config))

ComboPooledDataSource ds = new ComboPooledDataSource();

2.创建连接池对象(方式二: 使用命名配置(named-config:mysql))

ComboPooledDataSource ds = new ComboPooledDataSource("mysql ");

3 BeanUtils工具

3.1 BeanUtils工具的作用

BeanUtils工具可以方便开发者对象javabean进行操作

JavaBean规范:

1)必须有无参的构造方法

2)把属性进行私有化

3)提供公开的gettersetter方法

使用步骤:

1)导入beanutillsjar

commons-beanutils-1.8.3.jar 核心包

commons-logging-1.1.3.jar 辅助包

3.2 JavaBean操作

1)对JavaBean的属性进行赋值

1.使用反射创建javabean对象

2.对javabean进行赋值

该方法是给javabean的一个属性赋值

   参数一:需要赋值的javabean对象

   参数二: 需要赋值的属性名称

   参数三: 属性值

 

2)对JavaBean的对象赋值

拷贝整个javabean的对象(所有属性一次性拷贝)

1.使用反射构造对象

2.把student的属性拷贝到student2中

参数一: 目标的javabean

参数二: 拷贝的源javabean

3)把Map数据赋值给JavaBean对象

1.使用反射构造对象

2.map数据拷贝到student2

4 元数据的使用

4.1 什么是元数据?

一、数据库相关的信息:(封装到数据库元对象: DataBaseMetaData

数据库的版本

驱动程序的版本

Connection.getMetaData()

DataBaseMetaData对象

getURL():返回一个String类对象,代表数据库的URL

getUserName():返回连接当前数据库管理系统的用户名。

getDatabaseProductName():返回数据库的产品名称。

getDatabaseProductVersion():返回数据库的版本号。

getDriverName():返回驱动驱动程序的名称。

getDriverVersion():返回驱动程序的版本号。

isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

 

二、参数相关的信息:(封装到参数元对象:ParameterMetaData)

参数数量

参数类型

PreparedStatement. getParameterMetaData()

获得代表PreparedStatement元数据的ParameterMetaData对象。

ParameterMetaData对象

getParameterCount() 获得指定参数的个数

getParameterType(int param) 获得指定参数的sql类型(驱动可能不支持)

Parameter metadata not available for the given statement

参数元数据对给定语句不可用

 

三、结果相关的信息:(封装到结果集元对象: ResultSetMetaData)

列数量

列名称

ResultSet.getMetaData()

获得代表ResultSet对象元数据的ResultSetMetaData对象。

ResultSetMetaData对象

getColumnCount() 返回resultset对象的列数

getColumnName(int column) 获得指定列的名称

getColumnTypeName(int column) 获得指定列的类型java.sql.Types

jdbc步骤:

1)连接数据库,获取Connection对象  (得到DataBaseMetaData

2)创建Statment,预编译sql语句 (得到ParameterMetaData

3)设置参数

4)执行sql,返回结果集 (得到ResultSetMetaData

5)遍历结果集

6)关闭连接

5 DBUtls工具

5.1 简介DBUtil工具

DBUtilsApache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。

5.2 使用步骤

1)导入jar

commons-dbutils-1.2.jar

2)使用的API

QueryRunner 通过此类可以执行更新操作或者查询操作。

update(.....): 用于更新操作(DDLDML

query(.....): 用于查询操作(DQL

ResultSetHandler接口:用于封装查询之后的结果。

Object handle(ResultSet rs)   用于封装数据

 

常用的实现类:

ArrayHandler 把结果集的第一行的数据封装成对象数组。

ArrayListHandler:把结果集的每一行数据封装对象数组,把这个对象数组放入List

BeanHandler 把结果集的第一行数据封装成javabean

BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIst

ScalarHandler 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max()

 

如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

 

收藏的博文 地址 https://www.cnblogs.com/CQY1183344265/p/5854418.html