程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> ORM小工具

ORM小工具

編輯:關於JSP

ORM小工具

代碼:

package org.blueidea.tools;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
* ResultSetMetaData 可用於獲取關於 ResultSet 對象中列的類型和屬性信息的對象
* ResultSet.getMetaData()  檢索此 ResultSet 對象的列的編號、類型和屬性
*/
public class DTOPopulator {
    public static List populate(ResultSet rs,Class clazz) throws Exception{
        ResultSetMetaData metaData = rs.getMetaData();
        int colCount = metaData.getColumnCount();
        List ret = new ArrayList();
        Field[] fields = clazz.getDeclaredFields();
        
        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();
                }
            }
            ret.add(newInstance);
        }
        return ret;
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved