• 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 }
  • 相关阅读:
    Python 用SMTP发送邮件
    Python 用IMAP接收邮件
    E-mail Composition and Decoding
    用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)
    【日志】-2013.10.31
    21本计算机数学相关的免费电子书【转】
    WordPress搭建Personal Blog【转】
    一句话点亮你的人生
    【日志】-2013.10.28
    转载-smarty教程(基本语法)
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3748046.html
Copyright © 2020-2023  润新知