概述
//ArrayHandler:适合取1条记录。把该条记录的每列值封装到一个数组中Object[]
//ArrayListHandler:适合取多条记录。把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中
//ColumnListHandler:取某一列的数据。封装到List中。
//KeyedHandler:取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值。
//MapHandler:适合取1条记录。把当前记录的列名和列值放到一个Map中
//MapListHandler:适合取多条记录。把每条记录封装到一个Map中,再把Map封装到List
//ScalarHandler:适合取单行单列数据
BeanHandler:把每条记录封装成对象,适合取一条记录
BeanListHandler 把每条记录封装成对象,把对象存储到List集合中,适合取多条记录
接下来的文章我们会针对ResultSetHandler下的结果集处理器进行系统的案例分析,完成针对结果集的封装。
案例代码
1.MySQL数据库创建图书信息表
2.创建Book.java javabean类 --略
3.建立CSP0连接池 --略
4.根据需求,使用指定的结果集获取数据结果
首先我们先介绍最常用的结果集:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;
import com.qf.bean.Book;
import com.qf.utils.C3P0Utils;
public class Demo_Query {
//1.BeanHandler把每条记录封装成对象适合取一条记录
@Test
public void testQuery2(){
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
try {
Book b =
qr.query(select * from book where id=?, new BeanHandlerBook(Book.class),1);
System.out.println(b);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//2.BeanListHandler把每条记录封装成对象将对象存储到List集合中
@Test
public void testQuery3(){
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
try {
ListBook list =
qr.query(select * from book where id=? or id=?, new BeanListHandlerBook(Book.class), 2,9);
System.out.println(list);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//3.ArrayHandler适合取一条记录 把该记录的每一列值存储到一个数组中 Object[]
@Test
public void testQuery3() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
Object[] arr = qr.query(select * from book where id=1, new ArrayHandler());
for(Object obj : arr){
System.out.println(obj);
}
}
//4.ArrayListHandler适合取多条记录 把该记录的每一列值存储到一个数组中 Object[]然后把数组封装到集合中
@Test
public void testQuery4() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
ListObject[] list = qr.query(select * from book, new ArrayListHandler());
for(Object[] obj:list){
for(Object o : obj){
System.out.print(o+,);
}
System.out.println();
}
}
//5.ColumnListHandler获取某一列的数据封装到List集合中
@Test
public void testQuery5() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
ListObject list = qr.query(select * from book, new ColumnListHandler(2));//可以根据列号 从1开始 /列名
for(Object obj:list){
System.out.println(obj);
}
}
//6.MapHandler适合取一条记录 把当前记录的列名 和 列值 放到一个Map中
@Test
public void testQuery6() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
MapString, Object map = qr.query(select * from book where id=1, new MapHandler());
for(Map.EntryString, Object entry : map.entrySet()){
System.out.println(entry.getKey()+::+entry.getValue());
}
}
//7.KeyedHandler取多条记录
//每条记录封装到Map中 再把Map封装到另一个Map中
// Mapkey,Mapkey,value
//内Map :key字段名 value:字段值
//外Map :key指定字段的值 value:内Map
//key为指定的字段值
@Test
public void testQuery7() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
MapObject, MapString,Object map = qr.query(select * from book, new KeyedHandler(id));
for(Map.EntryObject, MapString,Object entry : map.entrySet()){
System.out.println(entry.getKey());
for(Map.EntryString, Object e : entry.getValue().entrySet()){
System.out.println(e.getKey()+;;;;+e.getValue());
}
System.out.println(-------------);
}
}
//8.MapListHandler适合取多条记录 把当前记录封装到Map中 再把Map封装到List中
@Test
public void testQuery8() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
ListMapString, Objectlist = qr.query(select * from book, new MapListHandler());
for(MapString, Object map : list){
for(String key : map.keySet()){
System.out.println(key+;;;;+map.get(key));
}
System.out.println(--------------);
}
}
//9.ScalarHandler适合取单行单列数据
@Test
public void testQuery9() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
Object obj = qr.query(select count(*) from book, new ScalarHandler());
System.out.println(obj);
}
}
以上代码是针对查询,给出的对应操作。当然,我们实际工作中不只有查询,还会涉及到一些增删改以及批量处理的功能。这时候我们就要使用QueryRunner类中的另外两个方法来完成了。他们分别是:
update()用于执行insert update delete
batch()批处理 可执行多条语句 批量
QueryRunner update()方法的使用 案例代码
package com.qf.dbutils;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import com.qf.utils.C3P0Utils;
//update()
public class Demo_Update {
@Test
public void testInsert01() throws SQLException{
//1.获取QueryRunner 对象
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = insert into book(name,price,num) values('html',10,12);
qr.update(sql);
}
@Test
public void testInsert02() throws SQLException{
//1.获取QueryRunner 对象
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = insert into book(name,price,num) values(?,?,?);
qr.update(sql, photoshop,23,6);
}
@Test
public void testUpdate(){
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = update book set price=? where id=1;
try {
qr.update(sql,80);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testDelete() throws SQLException{
//1.获取QueryRunner 对象
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = delete from book where id=13;
qr.update(sql);
}
@Test
public void testDelete2() throws SQLException{
//1.获取QueryRunner 对象
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = delete from book where name like ?;
qr.update(sql,%java%);
}
}
QueryRunner batch()方法的使用 案例代码
package com.qf.dbutils;
import java.sql.SQLException;
import java.util.Arrays;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import com.qf.utils.C3P0Utils;
public class Demo_Batch {
/*
* batch() 方法 是批量处理
* 所需要的参数包括一个二维数组
* Object[][] params = new Object[5][]; 高维 的数 5 决定是执行sql语句的次数
* 低维数组的元素 就是给 sql语句 ? 赋值的
* */
@Test
public void testBatchInsert() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//batch方法 第二个参数 是一个二维数组 所以 我们先创建一个二维数组
Object[][] params = new Object[5][];
//给二维数组中 每一个一维数组的元素 进行赋值
for(int i=0;iparams.length;i++){
params[i] = new Object[]{html,22,39};
}
int[] arr = qr.batch(insert into book(name,price,num) values(?,?,?), params);
System.out.println(Arrays.toString(arr));
}
@Test
public void testBatchDelete() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
Object[][] params = new Object[3][];
for(int i=0;iparams.length;i++){
params[i] = new Object[]{i};
}
qr.batch(delete from book where id=?, params);
}
}
最后
以上就是忧心咖啡为你收集整理的JResultSetHandler下的常用结果集的全部内容,希望文章能够帮你解决JResultSetHandler下的常用结果集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复