博客统计信息

51cto推荐博客
用户名:danni505
文章数:227
评论数:135
访问量:160775
无忧币:10372
博客积分:3339
博客等级:7
注册日期:2006-05-01

我的技术圈(0)

更多>>
ResultSet 2 List
2010-01-15 16:22:39
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://danni505.blog.51cto.com/15547/265906
 
 
Share two method for JDBC's ResultSet convert into different data format list, one is for json, other is object instance.
 
/**
    * Convert ResultSet to List, data format for JSON
    * @param rs
    * @return    
    *      data format:[{CORPNO=TCS0232,TAXNO=Tax001},{CORPNO=TCS0232,TAXNO=Tax001}]
    * @throws SQLException
    */

  @SuppressWarnings("unchecked")
  private static List convertList(ResultSet rs) throws SQLException {    
    //Container
    List list = new ArrayList();    
    //Get the element of resultSet
    ResultSetMetaData md = rs.getMetaData();    
    //Map rowData;
    int columnCount = md.getColumnCount();    
    //Use Map
    while (rs.next()) {
      Map rowData = new HashMap();    
      //Fill up
      for (int i = 1; i <= columnCount; i++) {    
        rowData.put(md.getColumnName(i), rs.getObject(i));    
      }    
      //Fill up
      list.add(rowData);    
    }    
    //back
    return list;    

    }    

  /**
    * Convert ResultSet to List, data format for Object
    *    
    * @param rs
    * @param clazz
    * @return
    *        A list of data object( For the some Class) instance.
    * @throws Exception
    */

  @SuppressWarnings("unchecked")
  public static List populate(ResultSet rs,Class clazz) throws Exception{
                //Get the element of resultSet
    ResultSetMetaData metaData = rs.getMetaData();    
                //Get count
                int colCount = metaData.getColumnCount();                    
                //Container
                List ret = new ArrayList();            
                
                //Get Object attributes
                Field[] fields = clazz.getDeclaredFields();        
                //Construct it
                while(rs.next()){
                        Object newInstance = clazz.newInstance();    
                        for(int i=1;i<=colCount;i++){    
                                try{
                                        Object value = rs.getObject(i);
                                        for(int j=0;j<fields.length;j++){
                                                Field f = fields[j];
                                                if(f.getName().equalsIgnoreCase(metaData.getColumnName(i).replaceAll("_",""))){
                                                        BeanUtils.copyProperty(newInstance,f.getName(),value);
                                                }
                                        }
                                }catch (Exception e) {
                                        // TODO: handle exception
                                        e.printStackTrace();
                                }
                        }
                        //Fill into
                        ret.add(newInstance);
                }
                //Back
                return ret;
        }

本文出自 “专注J2EE系列规范下的..” 博客,请务必保留此出处http://danni505.blog.51cto.com/15547/265906

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:CoreJava技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2010-01-21 17:35:33
路过 学习

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: