•commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装。学习成本极低。而且使用dbutils能极大简化jdbc编码的工作量,同一时候也不会影响程序的性能。

•API介绍:

–org.apache.commons.dbutils.QueryRunner

–org.apache.commons.dbutils.ResultSetHandler

–工具类

•org.apache.commons.dbutils.DbUtils。


QueryRunner类有两类主要方法:

query() : 用于查询数据

update() : 用于增删改


ResultSetHandler接口用与将查询到的数据按要求转换为还有一种格式。


•ArrayHandler:把结果集中的第一行数据转成对象数组。

•ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。

•BeanHandler:将结果集中的第一行数据封装到一个相应的JavaBean实例中。

•BeanListHandler:将结果集中的每一行数据都封装到一个相应的JavaBean实例中,存放到List里。
•ColumnListHandler:将结果集中某一列的数据存放到List中。
•KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
•MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是相应的值。

•MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List


-------------------------------------------------下面为详细的Demo--------------------------------------------------------------

QueryRunner.update()

<span style="font-size:14px;">	/**
* 測试 QueryRunner 类的 update 方法
* 该方法可用于 INSERT, UPDATE 和 DELETE
*/
@Test
public void testQueryRunnerUpdate() {
//1. 创建 QueryRunner 的实现类
QueryRunner queryRunner = new QueryRunner(); String sql = "DELETE FROM customers " +
"WHERE id IN (?,?)"; Connection connection = null; try {
connection = JDBCTools.getConnection();
//2. 使用其 update 方法
queryRunner.update(connection,
sql, 12, 13);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
} }</span>

BeanHandler:把结果集的第一条记录转为创建BeanHandler对象时传入的Class參数相应的对象.

<span style="font-family:SimSun;font-size:14px;"><span style="font-size:14px;font-weight: normal;">public void testBeanHandler() {

		QueryRunner queryRunner = new QueryRunner();
Connection conn = null; try {
conn = JDBCTools.getConnection();
String sql = "SELECT id, name customerName, email, birth "
+ "FROM customers WHERE id>=?";
Customer customer = queryRunner.query(conn, sql, new BeanHandler(
Customer.class), 5); System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.releaseDB(null, null, conn);
}
}</span></span>

BeanListHandler:把结果集转为一个List,该List不为null,但可能为空集合(即size()方法返回0)

<span style="font-family:SimSun;font-size:14px;">public void testBeanListHandler(){
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers"; QueryRunner queryRunner = new QueryRunner(); Connection conn = null; try {
conn = JDBCTools.getConnection(); Object object = queryRunner.query(conn, sql,
new BeanListHandler<>(Customer.class)); System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, conn);
}
}</span>

MapHandler:返回SQL语句相应的第一条记录相应的Map对象.键:SQL查询的列名(不是列的别名),值:列的值.

<span style="font-family:SimSun;font-size:14px;"><span style="font-size:14px;font-weight: normal;">public void testMapHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT id, name customerName, email, birth " +
"FROM customers WHERE id = ? "; try {
connection = JDBCTools.getConnection();
Map<String, Object> map = queryRunner.query(connection,
sql, new MapHandler(), 4); System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span></span>

MapLiatHandler:将结果转化为一个Map的List. MapLiatHandler:返回的多条记录相应的Map的集合.

<span style="font-family:SimSun;font-size:14px;font-weight: normal;">public void testMapListHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT id, name, email, birth " +
"FROM customers"; try {
connection = JDBCTools.getConnection();
List<Map<String, Object>> mapList = queryRunner.query(connection,
sql, new MapListHandler()); System.out.println(mapList);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span>

ScalarHandler:把结果集转为一个数值(能够是随意类型)返回

<span style="font-family:SimSun;">public void testScalarHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT name FROM customers " +
"WHERE id = ?"; try {
connection = JDBCTools.getConnection();
Object count = queryRunner.query(connection, sql,
new ScalarHandler(), 6); System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span>





Apache-DBUtils包对数据库的操作的更多相关文章

  1. 使用apache.lang包安全简洁地操作Java时间

    引言 最近偶遇apache开发的工作java工具包,一使用,就发现自己爱上它了.不多说了,下面介绍org.apache.commons.lang3.time包中处理java程序员为之头疼的时间的类. ...

  2. JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表

    本文目录:       1.自定义JDBC框架 ——数据库元数据:DataBaseMetaData        2.自定义JDBC框架 ——数据库元数据:DataBaseMetaData       ...

  3. apache DBUtils 使用例子demo

    转自:http://blog.csdn.net/earbao/article/details/44901061 apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用, 1.对 ...

  4. Apache—DBUtils框架简介

    转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...

  5. Apache DBUtils使用总结 【转】

    Apache DBUtils使用总结   DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味. ...

  6. Apache—dbutils开源JDBC工具类库简介

    Apache—dbutils开源JDBC工具类库简介 一.前言 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用 ...

  7. Android-Sqlite数据库的操作

    Sqlite数据库的简单操作: 设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> ...

  8. Eclipse连接到My sql数据库的操作总结/配置数据库驱动

    Eclipse连接到MYSQL数据库的操作 (自己亲测,开始学习Eclipse(我的Eclipse版本是4.5.2,Jdbc驱动器的jar包版本是5.1.7,亲测可以使用)连接到数据库的时候,发现网上 ...

  9. Java通过代理类实现数据库DAO操作

    下面的所有代码示例都取自李兴华的<Java Web开发实战经典>的随书源码,因为觉得设计得很好,所以将代码摘录下来作成笔记. 首先,我们在一个java文件中定义要存储的结构类型: impo ...

随机推荐

  1. uname---用于打印当前系统相关信息

    uname命令用于打印当前系统相关信息(内核版本号.硬件架构.主机名称和操作系统类型等). 语法 uname(选项) 选项 -a或--all:显示全部的信息: -m或--machine:显示电脑类型: ...

  2. neo4j nosql图数据库学习

    neo4j 文档:https://neo4j.com/docs/getting-started/current/cypher-intro/ 1.索引 # 给某类标签节点的属性添加索引 CREATE I ...

  3. Python 生成器 Generator 和迭代器 Iterator

    #最近一周刚开始接触python,基本的语法,和使用特性和Java差别还是蛮大的. 今天接触到Python的迭代器和生成器有点不是很明白,所以搜索了先关资料整理了一些自己的理解和心得 简述(Profi ...

  4. C#日期控件datetimepicker保存空值方法

    方法一(推荐): 设置datetimepicker的属性ShowCheckBox为true 在窗口初始化时候,添加代码this.datetimepicker1.Checked = false; 保存日 ...

  5. Android Recovery OTA升级(一)—— make otapackage

    文件夹 文件夹 概述 make otapackage BUILT_TARGET_FILES_PACKAGE ota_from_target_files WriteFullOTAPackage Sign ...

  6. Dojo入门篇

    Dojo是一个JavaScript实现的开源DHTML工具包,Dojo最初的目标是解决开发HTML应用程序中遇到的一些长期存在的问题.然而如今Dojo已经成为了开发RIA应用程序的利器. Dojo让W ...

  7. zzulioj--1816--矩形(好题数学)

    1816: 矩形 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 88  Solved: 24 SubmitStatusWeb Board Descri ...

  8. CORS support in Spring Framework--官方

    原文地址:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework For security reasons, browse ...

  9. Android ViewPager实现多个图片水平滚动

    1.示意图                       2.实现分析 (1).xml配置 <!-- 配置container和pager的clipChildren=false, 并且指定margi ...

  10. Dom4j 查找节点或属性

    Dom4j  查找节点或属性 例如 1 查找下面xml中的student节点的age属性, xpathstr="/students/student/@age"; 2 查找下面xml ...