zoukankan      html  css  js  c++  java
  • QueryRunner 结果处理器

     1 package cn.itcast.dbutil;
     2 
     3 import java.sql.SQLException;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import org.apache.commons.dbutils.QueryRunner;
     8 import org.apache.commons.dbutils.handlers.ArrayHandler;
     9 import org.apache.commons.dbutils.handlers.ArrayListHandler;
    10 import org.apache.commons.dbutils.handlers.BeanHandler;
    11 import org.apache.commons.dbutils.handlers.BeanListHandler;
    12 import org.apache.commons.dbutils.handlers.ColumnListHandler;
    13 import org.apache.commons.dbutils.handlers.KeyedHandler;
    14 import org.apache.commons.dbutils.handlers.MapHandler;
    15 import org.apache.commons.dbutils.handlers.MapListHandler;
    16 import org.apache.commons.dbutils.handlers.ScalarHandler;
    17 import org.junit.Test;
    18 
    19 import cn.itcast.domain.Account;
    20 import cn.itcast.util.DBCPUtil;
    21 
    22 //查询练习
    23 public class DbUtilDemo2 {
    24     private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
    25     @Test//BeanHandler
    26     public void test1() throws SQLException{
    27         Account a = qr.query("select * from account where id=?", new BeanHandler<Account>(Account.class), 1);
    28         System.out.println(a);
    29     }
    30     @Test//BeanListHandler
    31     public void test2() throws SQLException{
    32         List<Account> list = qr.query("select * from account", new BeanListHandler<Account>(Account.class));
    33         for(Account a:list)
    34             System.out.println(a);
    35     }
    36     
    37     @Test//ArrayHandler:把结果集中的第一行数据转成对象数组。只适合结果集有一条记录的情况
    38     public void test3() throws SQLException{
    39         //该数组中每个元素就是记录的每列的值
    40         Object objs[] = qr.query("select * from account where id=?", new ArrayHandler(),1);
    41         for(Object o:objs)
    42             System.out.println(o);
    43     }
    44     @Test//ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
    45     public void test4() throws SQLException{
    46         //该数组中每个元素就是记录的每列的值
    47         List<Object[]> list = qr.query("select * from account", new ArrayListHandler());
    48         for(Object[] objs:list){
    49             System.out.println("-----------------");
    50             for(Object o:objs)
    51                 System.out.println(o);
    52         }
    53     }
    54     @Test//ColumnListHandler:将结果集中某一列的数据存放到List中
    55     public void test5() throws SQLException{
    56         List<Object> list = qr.query("select * from account", new ColumnListHandler("id"));
    57         for(Object o:list)
    58             System.out.println(o);
    59     }
    60     @Test//KeyedHandler(name):将结果集中的每一行数据都封装到一个Map<列名,列值>里,再把这些map再存到一个map里,其key为指定的key。
    61     public void test6() throws SQLException{
    62         Map<Object, Map<String,Object>> bmap= qr.query("select * from account", new KeyedHandler("id"));
    63         for(Map.Entry<Object, Map<String,Object>> bme:bmap.entrySet()){
    64             System.out.println("-----------------");
    65             Map<String,Object> lmap = bme.getValue();
    66             for(Map.Entry<String,Object> lme:lmap.entrySet()){
    67                 System.out.println(lme.getKey()+"="+lme.getValue());
    68             }
    69         }
    70     }
    71     @Test//MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
    72     public void test7() throws SQLException{
    73         Map<String,Object> map= qr.query("select * from account where id=?", new MapHandler(),1);
    74         for(Map.Entry<String, Object> me:map.entrySet()){
    75             System.out.println(me.getKey()+"="+me.getValue());
    76         }
    77     }
    78     @Test//MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
    79     public void test8() throws SQLException{
    80         List<Map<String,Object>> list= qr.query("select * from account", new MapListHandler());
    81         for(Map<String,Object> map:list){
    82             System.out.println("-----------------");
    83             for(Map.Entry<String, Object> me:map.entrySet()){
    84                 System.out.println(me.getKey()+"="+me.getValue());
    85             }
    86         }
    87     }
    88     @Test//ScalarHandler 适合取一条一列的记录。比如记录总数
    89     public void test9() throws SQLException{
    90         Object obj = qr.query("select count(*) from account", new ScalarHandler(1));
    91         System.out.println(obj.getClass().getName());
    92         int num = ((Long)obj).intValue();
    93         System.out.println(num);
    94     }
    95 }
  • 相关阅读:
    JavaScript 核心参考 Arguments 对象
    readonly 和 disable的区别
    Asp.net 页面导航的几种方法与比较(转)
    CSS float clear 使用
    PHP时区列表
    Jquery 父窗口中移进移出鼠标到Iframe: 移进显示更多内容, 移出隐藏部分内容
    Mysql 查看进程SQL
    好用的弹出对话框 artDialog
    In Cache 算法
    live 绑定事件会触发多次
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3748046.html
Copyright © 2011-2022 走看看