•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. windows下laravel5安装

    第一步:安装composer    网上教程非常多,自行百度 第二步:使用composer create-project laravel/laravel learnlaravel5 5.0.22   ...

  2. Spring官方文档翻译——15.4 处理器映射(Handler mappings)

    15.4 处理器映射(Handler mappings) 注:以下将handler翻译成处理器 在Spring早先的版本号中,用户还须要在web应用上下文中定义处理器映射来配置请求(requests) ...

  3. TCP/IP具体解释--TCP的分段和IP的分片

    写在前面: 分组能够发生在运输层和网络层.运输层中的TCP会分段,网络层中的IP会分片.IP层的分片很多其它的是为运输层的UDP服务的,因为TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会 ...

  4. 特定位取反(js实现)

    去华为面试的时候.没有做好准备工作.面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及.笔者是擅长前端的Java Webproject师啊,主要的底层编程知识早已生疏了.机试题碰到了 ...

  5. 123.static静态函数与类模板

    #include <iostream> using namespace std; //静态函数没有this指针,无需创建对象就可以直接调用 template<class T> ...

  6. HDU 2435 There is a war Dinic 最小割

    题意是有n座城市,n号城市不想让1号城市可达n号,每条道路有一条毁坏的代价,1号还可以修一条不能毁坏的道路,求n号城市所需的最小代价最大是多少. 毁坏的最小代价就直接求一遍最大流,就是最小割了.而可以 ...

  7. java.util.logging.FileHandler

    java.util.logging.FileHandler java自带的日志功能,FileHandler可以写日志到文件系统,并且自己维护日志的增删,比c++不知道强多少 FileHandler(f ...

  8. OpenSUSE下支持托盘的邮件客户端Sylpheed

    在网上搜索了很多客户端想支持系统托盘,发现一个很不错的邮件客户端Sylpheed.设置方式和foxmail很像,最为重要的是支持系统托盘,很方便,默认没有开启,简单设置下:配置->通用首选项-& ...

  9. 使用iVMS-4200 存储录像数据时的设置

    1.安装软件时,选择:存储服务器 2.对存储服务器进行配置,具体配置见 配置手册.

  10. CodeChef November Challenge 2013 部分题解

    http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[ ...