QueryRunner类 的應用,以及ResultSetHandler 接口的实现类
1 .该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。
2.ResultSetHandler 接口的实现类
ArrayHandler:把结果集中的第一行数据转成对象数组。 |
3.示例代碼如下:
1.首先定義一實體類
package com.beiwo.day05.entity; import java.io.Serializable;
import java.sql.Date; public class Person implements Serializable{ /**
*
*/
private static final long serialVersionUID = 1L; private int id; private String name; private String password; private String email; private Date birthday; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public static long getSerialversionuid() {
return serialVersionUID;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", password=" + password
+ ", email=" + email + ", birthday=" + birthday + ", getId()="
+ getId() + ", getName()=" + getName() + ", getPassword()="
+ getPassword() + ", getEmail()=" + getEmail()
+ ", getBirthday()=" + getBirthday() + ", getClass()="
+ getClass() + ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
} }
測試查詢
package com.beiwo.day05.test; import java.sql.SQLException;
import java.util.List;
import java.util.Map; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test; import com.beiwo.day05.entity.Person;
import com.beiwo.day05.util.C3P0Util; public class TestDBUtils { @Test //把结果集中的每一行数据都转成一个数组,再存放到List中。 public void testArrayListHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person"; List<Object[]> list = qr.query(sql, new ArrayListHandler()); for (Object[] objects : list) {
for (Object object : objects) {
System.out.println(object);
}
System.out.println("-----------------------------");
}
} @Test //把结果集中的第一行数据转成对象数组。 public void testArrayHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person"; Object[] object = qr.query(sql, new ArrayHandler());
for(Object object1 : object){
System.out.println(object1);
} } // @Test 将结果集中某一列的数据存放到List中。
public void testColumnListHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT name,password,email,birthday FROM person"; List<Object> persons = qr.query(sql, new ColumnListHandler(2));
for(Object object : persons){
System.out.println(object);
} } @Test //将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。 public void testMapHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person WHERE id=?"; Map<String, Object> map= qr.query(sql, new MapHandler(),1);
for (Map.Entry<String, Object> m:map.entrySet()) {
System.out.println(m.getKey() + "\t" + m.getValue());
} } @Test //将结果集中的每一行数据都封装到一个Map里,然后再存放到List public void testMapListHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person "; List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
for (Map<String, Object> map : list) {
for (Map.Entry<String, Object> m : map.entrySet()) {
System.out.println(m.getKey() + "\t" + m.getValue());
}
System.out.println("--------------------------------------------");
} } @Test //查询数据库中信息的总条数
public void testScalarHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT COUNT(*) FROM person "; Long l = (Long)qr.query(sql, new ScalarHandler(1));
System.out.println(l); } @Test //将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。 public void testBeanListHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person "; List<Person> list = qr.query(sql, new BeanListHandler<Person>(Person.class));
System.out.println(list);
} @Test //将结果集中的第一行数据封装到一个对应的JavaBean实例中。
public void testBeanHandler() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM person WHERE id=?"; Person person = qr.query(sql, new BeanHandler<Person>(Person.class),1);
System.out.println(person);
}
}
測試增刪改
package com.beiwo.day05.test; import java.sql.SQLException;
import java.util.Date; import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test; import com.beiwo.day05.util.C3P0Util; public class TestUpDate { @Test
public void testInsert() throws SQLException{
QueryRunner qRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "INSERT INTO person(name,password,email,birthday)VALUES(?,?,?,?)";
qRunner.update(sql, "ccc","789","789@qq.com",new Date());
} @Test
public void testUpDate1() throws SQLException{
QueryRunner qRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "UPDATE person SET name='www' WHERE id=2";
qRunner.update(sql);
} @Test
public void testUpDate2() throws SQLException{
QueryRunner qRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "DELETE FROM person WHERE id=6";
qRunner.update(sql);
} }
QueryRunner类 的應用,以及ResultSetHandler 接口的实现类的更多相关文章
- JAVA中所有与集合有关的实现类都是这六个接口的实现类
JAVA中所有与集合有关的实现类都是这六个接口的实现类. Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构. List接口代表按照元素一定的相关顺序来组 ...
- 使用DbUtils实现增删改查——ResultSetHandler 接口的实现类
在上一篇文章中<使用DbUtils实现增删改查>,发现运行runner.query()这行代码时.须要自己去处理查询到的结果集,比較麻烦.这行代码的原型是: public Object q ...
- pache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口
Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC ...
- Apache——DBUtils框架ResultSetHandler接口使用
参考链接:http://i.cnblogs.com/EditPosts.aspx?opt=1 简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDB ...
- DBUtils框架ResultSetHandler接口学习
今儿在学习spring框架的时候,让我想起来之前做项目时一直搁置的一个问题,就是DBUtils框架的做数据库操作的使用,当时制作项目的时候就是通过实例打了一遍,由于时间原因也并没有仔细去了解这一方面. ...
- 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...
- spring的依赖注入,为什么用接口的实现类而不是父类的继承类?
@Resource private EmployeeService employeeService; public void setEmployeeService(EmployeeService em ...
- Java基础-多线程编程-1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。
1.随便选择两个城市作为预选旅游目标.实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市.分别用Runnable接口和Thread ...
- Hibernate的实体类为什么要实现Serializable序列化接口?
Hibernate的实体类中为什么要继承Serializable? hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中的传输 等等. java中常见的几个类(如 ...
随机推荐
- sharepoint 相关<httpHandlers>
<add verb="GET,POST,HEAD,(GETSOURCE),(HEADSOURCE),(POSTSOURCE)" path="*.doc,*.docx ...
- 【转】swift实现ios类似微信输入框跟随键盘弹出的效果
swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...
- HotApp小程序统计之自定义事件统计
什么是自定义事件统计 官网:https://weixin.hotapp.cn/document 自定事件,就是自定统计任意事件的执行,灵活度最高. 用上图的云笔记说明想知道如下信息 (1)多少 ...
- Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案
1.Android一整套图片解决方案 http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820998&idx=1& ...
- Objective-C 30分钟入门教程
Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...
- ORACLE基本数据类型总结
ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID &am ...
- 关于linux,我们应该学什么?
为了系统地学习一下linux相关知识,我花了三天的时间看完了那本经典的<鸟哥的linux私房菜>.所谓的经典必然是有其过人之处,而看完这本书之后,我毫无疑问地加入了强烈推荐这本书的行列. ...
- Python基础之面向对象
一.面向对象概述 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程 ...
- android 获取应用的当前版本号&获取当前android系统的版本号
(转自:http://www.cnblogs.com/qsl568/archive/2012/03/14/2395636.html) 获取当前应用的版本号: private String getVer ...
- 迅为-iMX6开发板 飞思卡尔iMX6Q开发板 工业级开发板
了解详情请点击迅为官网:http://topeetboard.com 迅为-i.MX6开发板是采用Freescale Cortex-A9 四核i.MX6Q处理器,主频1GHz,2G DDR3内存,16 ...