QueryRunner 进行查询的操作
ArrayHandler :将ResultSet中第一行的数据转化成对象数组
ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
MapHandler :将ResultSet中第一行的数据存成Map映射
MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
主要方法:
DbUtils类:启动类
ResultSetHandler接口:转换类型接口
MapListHandler类:实现类,把记录转化成List
BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象
Query Runner类:执行SQL语句的类
C3P0
C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate,Spring等。
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。获取一个连接,系统要在背后做很多消耗资源的事情,大多时候,创建连接的时间比执行sql语句的时间还要长。用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。
数据库连接池
1:spring hibernate 都会使用
2:原因
2.1每次访问数据库都要建立新的连接,用完之后都要释放。所以访问数据库就会频繁存在,耗时,耗资源。
2.2建立连接不会保持连接状态,一般是几百毫秒。
Pool
使用pool建立数据库的连接时,时间会缩短几十倍。大约十几秒,
3:使用
3.1导入包
(1)导入c3p0 包
(2)导入MySQL包
3.2配置
在src目录下创建名为c3po-config文件xml文件。名字不能写其他的。因为将来这个xml需要加载。
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="user">root</property>
<property name="password">root</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day10test
</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 连接池初始化的时候的连接数 -->
<property name="initialPoolSize">5</property>
<!-- 连接池中连接的最大个数 -->
<property name="maxPoolSize">20</property>
<!-- 用户获得连接Connection的时候,如果有连接就获得,没有就等待的时间,如果超时就报异常 -->
<property name="maxIdleTime">5000</property>
<!-- 连接池中连接的最小个数 -->
<property name="minPoolSize">5</property>
</default-config>
</c3p0-config>