dbutils的查询,主要用到的是query方法,增加,修改和删除都是update方法,update方法就不讲了

只要创建ResultSetHandler接口不同的实现类对象就可以得到想要的查询结果,该接口的实现类有

接下来讲解一些经常用到的:

下面的代码都是要抛出异常的,为了看起来简洁,我在这里把异常去掉了

ArrayHandler类:把结果集的'第一行'记录封装成数组,
  测试代码:

QueryRunner qr = new QueryRunner(dataSource);
String sql = "select * from user";
Object[] objArr = qr.query(sql, new ArrayHandler());
}

ArrayListHandler类:把结果集的每一行封装到一个数组中,然后把这些数组放到一个集合中返回
  测试代码:

QueryRunner qr = new QueryRunner(dataSource);
String sql = "select * from user";
List<Object[]> list = qr.query(sql, new ArrayListHandler());
}

BeanHandler类:把结果集的'第一行'记录作为一个javaBean对象返回(前提:结果集的字段名(可以用取别名) 和 javaBean的属性名保持一致)
  测试代码:

QueryRunner qr = new QueryRunner(dataSource);
String sql = "select * from user";
User user = qr.query(sql, new BeanHandler<User>(User.class));

BeanListHandler类:把结果集的每一行封装成一个javaBean对象,然后把这些对象放入到一个List集合中返回
  测试代码:

QueryRunner qr = new QueryRunner();
String sql = "select * from user";
List<User> userList = qr.query(conn, sql, new BeanListHandler<User>(User.class));

ScalarHandler类:返回'结果集'中第一行的某个值, 具体视构造方法的参数而定, 返回值类型视表中字段的类型而定
有3个构造方法, 用于聚合查询比较好
new ScalarHandler(); 返回结果集中第一行第一列的值
new ScalarHandler(int columnIndex); 返回结果集中第一行第columnIndex列的值(列从1开始计算)
new ScalarHandler(String columnName); 返回结果集中第一行名字为columnName的值
  测试代码:

QueryRunner qr = new QueryRunner();
String sql = "select id, username, hobby as hob from user"; Integer obj1 = qr.query(conn, sql, new ScalarHandler<Integer>()); //结果集中第一行第一列的值
String obj2 = qr.query(conn, sql, new ScalarHandler<String>(2)); //结果集中第一行第2列的值
String obj3 = qr.query(conn, sql, new ScalarHandler<String>("hob")) //结果集中第一行名字为hob

ColumnListHandler类:将结果集中某一列的数据存放到List中, 与上面ScalarHandler类似的有3个构造方法
  测试代码:

QueryRunner qr = new QueryRunner();
String sql = "select * from user"; // List<Integer> idList = qr.query(conn, sql, new ColumnListHandler<Integer>());
// List<String> idList = qr.query(conn, sql, new ColumnListHandler<String>("hobby"));
List<String> list = qr.query(conn, sql, new ColumnListHandler<String>(4));

MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值
  测试代码:

QueryRunner qr = new QueryRunner();
String sql = "select * from user";
Map<String, Object> map = qr.query(conn, sql, new MapHandler());

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

QueryRunner qr = new QueryRunner();
String sql = "select * from user";
List<Map<String, Object>> listMap = qr.query(conn, sql, new MapListHandler());

我这里都是举例的不带参数的,如果有参数,在sql中参数用?表示,然后使用带参数的query方法按顺序依次把参数传入即可

有关连接数据库的,请参考我另一篇随笔:c3p0连接数据库的3种方式

dbutils基本使用的更多相关文章

  1. BenUtils组件和DbUtils组件

    BenUtils组件和DbUtils组件 [TOC] 1.BenUtils组件 1.1.简介 程序中对javabean的操作很频繁,所有Apache提供了一套开源api,方便javabean的操作!即 ...

  2. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  3. <十六>JDBC_使用 DBUtils 编写通用的DAO

    接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...

  4. <十五>JDBC_使用 DBUtils 进行更新、查询操作

    详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...

  5. DBUtils 笔记

    一.DBUtils介绍  apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...

  6. python DBUtils.PooledDB 中 maxcached 和 maxconnections

    PooledDB 有这么几个参数 mincached : the initial number of idle connections in the pool (the default of 0 me ...

  7. 【Java EE 学习 17 上】【dbutils和回调函数】

    一.dbutils的核心就是回调函数,可以说如果没有回调函数的思想,dbutils是不可能被开发出来的. 对于dbutils中的QuryRunner类,向该类的query方法提供不同的参数,可以得到不 ...

  8. 【Java EE 学习 16 下】【dbutils的使用方法】

    一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...

  9. DBUtils

    DBUtils中核心对象 > QueryRunner类 它提供了操作数据增删改查的方法 query() 执行select语句的 update() 执行insert update delete 语 ...

随机推荐

  1. spring无法读取properties文件数据

    只讲述异常点,关于怎么配置文件,这里不做说明.   1. controller中无法读取config.properties文件 controller中注入的@Value配置是从servlet-cont ...

  2. 多线程条件通行工具——CountDownLatch

    CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行. CountDownLatch(int)构造方法,指定初始计数. await()等待计数减至0. await(long, ...

  3. JVM类加载

    JVM的类加载机制就是:JVM把描述类的class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被JVM直接使用的Java类型 ClassLoader JVM中的ClassLoade ...

  4. MediatorPattern(中介者模式)

    /** * 中介者模式 * @author TMAC-J * 研究了这么多设计模式,觉得无非就是几点: * 1.若两个类有耦合关系,设立一个中间类,处理两个类的关系,把两个类的耦合降低 * 2.面向接 ...

  5. python 常用第三方模块

    除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在https://pypi.python.org/pypi上注册,只要找到对应的模块名字,即可用pip安装. 本章介绍 ...

  6. [异常解决] How make ubuntu use Google Search

    1.Download the hosts file fromhttps://laod.cn/hosts/2016-google-hosts.html [1] 2.Write a bash shell ...

  7. ABP源码分析十六:DTO的设计

    IDTO:空接口,用于标注Dto对象. ComboboxItemDto:用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于na ...

  8. ABP框架 - 启动配置

    文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 置ABP 在预初始化事件中进行配置,示例: kid1412注:XmlL ...

  9. maven archetype二三事

    maven plugin 创建maven archetype 骨架的plugin是 <plugin> <groupId>org.apache.maven.plugins< ...

  10. 如何开发一款堪比APP的微信小程序(腾讯内部团队分享)

    一夜之间,微信小程序刷爆了行业网站和朋友圈,小程序真的能如张小龙所说让用户"即用即走"吗? 其功能能和动辄几十兆安装文件的APP相比吗? 开发小程序,是不是意味着移动应用开发的一次 ...