dbutils基本使用
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基本使用的更多相关文章
- BenUtils组件和DbUtils组件
BenUtils组件和DbUtils组件 [TOC] 1.BenUtils组件 1.1.简介 程序中对javabean的操作很频繁,所有Apache提供了一套开源api,方便javabean的操作!即 ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- <十六>JDBC_使用 DBUtils 编写通用的DAO
接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...
- <十五>JDBC_使用 DBUtils 进行更新、查询操作
详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...
- DBUtils 笔记
一.DBUtils介绍 apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...
- python DBUtils.PooledDB 中 maxcached 和 maxconnections
PooledDB 有这么几个参数 mincached : the initial number of idle connections in the pool (the default of 0 me ...
- 【Java EE 学习 17 上】【dbutils和回调函数】
一.dbutils的核心就是回调函数,可以说如果没有回调函数的思想,dbutils是不可能被开发出来的. 对于dbutils中的QuryRunner类,向该类的query方法提供不同的参数,可以得到不 ...
- 【Java EE 学习 16 下】【dbutils的使用方法】
一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...
- DBUtils
DBUtils中核心对象 > QueryRunner类 它提供了操作数据增删改查的方法 query() 执行select语句的 update() 执行insert update delete 语 ...
随机推荐
- .NET应用和AEAI CAS集成详解
1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...
- Linux基础介绍【第一篇】
Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- Hbase安装和错误
集群规划情况: djt1 active Hmaster djt2 standby Hmaster djt3 HRegionServer 搭建步骤: 第一步:配置conf/regionservers d ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- 站在风口,你或许就是那年薪20w+的程序猿
最近面试了一些人,也在群上跟一些群友聊起,发现现在的互联网真是热,一些工作才两三年的期望的薪资都是十几K的起,这真是让我们这些早几年就成为程序猿的情何以堪!正所谓是站在风口上,猪也能飞起来!我在这里就 ...
- Marmoset Toolbag中的角色布光技巧 by Joe”EarthQuake”Wilson
Sagat by Tim “spacemonkey” Appleby 有言在先 首先,我要感谢才华横溢的Tim“spacemonkey Appleby允许本教程中使用他那个极其NB的Sagat模型.不 ...
- PHP日志压缩下载
主要实现了在后台查看日志列表及打包下载功能. 由于用到了PHP压缩功能,特此记录下. 压缩下载类: Hzip.php <?php /** * Created by PhpStorm. * @au ...
- Spring的前期配置
1创建一个java项目,鼠标单击项目右键新建一个名为lib的文件夹 2在lib文件夹中考入Spring需要的配置文件(俗称jar包) 3 按Shift选中这些jar右键添加至构建路径 4选中src目录 ...
- jQuery 根据值或者文本选中select
今天因为有项目需要动态操作select选中 习惯在百度上搜了一下 ,结果还是挺多的.试了其中一个 发现不能使用.打开第2,3 个发现都是一样的然后自己稍微研究了一下 //初始化select,第一个选中 ...