DButils
Posted lldsgj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DButils相关的知识,希望对你有一定的参考价值。
1 连接池
1.1 什么是连接池?
之前jdbc步骤: 获取连接 -> 得到Statement-> 发送sql -> 关闭连接
通讯录系统:
CURD 四次
问题: 获取连接对象需要消耗比较多的资源,而每次操作都要重新获取新的连接对象,执行一次操作就把连接关闭,这样连接对象的使用效率并不高!!!
办法: 能不能让连接对象反复使用???如果可以的话,连接对象使用率提高!
这就可以用连接池实现!!
2 连接池工具
2.1 DBCP连接池
DBCP: DataBase Connection Pool
特点:
1)Apache旗下的软件,开源连接池
2)Tomcat的服务器的连接池默认实现
使用步骤:
1)导入dbcp的jar包
commons-dbcp-1.4.jar 核心包
commons-pool-1.5.6.jar 辅助包
2)创建连接池对象BasicDataSource对象
3)设置连接参数(url,user,password,dirverClass)
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)开源连接池
2)Hibernate框架,默认推荐使用C3P0作为连接池实现
使用步骤:
1)导入c3p0的jar包
c3p0-0.9.1.2.jar 核心包
2)创建连接池对象ComboPooledDataSource对象
3)设置连接参数(url,user,password,dirverClass)
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)提供公开的getter和setter方法
使用步骤:
1)导入beanutills的jar包
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工具
DBUtils是Apache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。
5.2 使用步骤
1)导入jar包
commons-dbutils-1.2.jar
2)使用的API
QueryRunner类: 通过此类可以执行更新操作或者查询操作。
update(.....): 用于更新操作(DDL、DML)
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
以上是关于DButils的主要内容,如果未能解决你的问题,请参考以下文章