利用java反射技術把ResultSet裝換為List
阿新 • • 發佈:2019-02-02
public static List resultSetToList(ResultSet rs,Class cls)
{
List list = new ArrayList();
try
{
//獲取資料庫表結構
ResultSetMetaData meta=rs.getMetaData();
Object obj=null;
while(rs.next())
{
//獲取formbean例項物件
obj=Class.forName(cls.getName()).newInstance();
//迴圈獲取指定行的每一列的資訊
for(int i=1;i<=meta.getColumnCount();i++)
{
//當前列名
String colName=meta.getColumnName(i);
//將列名第一個字母大寫(為什麼加+""呢?為了把char型別轉換為String型別。replace的引數是String型別。)
colName=colName.replace(colName.charAt(0)+"", new String(colName.charAt(0)+"").toUpperCase());
//設定方法名
String methodName="set"+colName;
//獲取當前位置的值,返回Object型別
Object value=rs.getObject(i);
//利用反射機制,生成setXX()方法的Method物件並執行該setXX()方法。
Method method=obj.getClass().getMethod(methodName, value.getClass());
method.invoke(obj, value);
}
list.add(obj);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally{
return list;
}
}
{
List list = new ArrayList();
try
{
//獲取資料庫表結構
ResultSetMetaData meta=rs.getMetaData();
Object obj=null;
while(rs.next())
{
//獲取formbean例項物件
obj=Class.forName(cls.getName()).newInstance();
//迴圈獲取指定行的每一列的資訊
for(int i=1;i<=meta.getColumnCount();i++)
{
//當前列名
String colName=meta.getColumnName(i);
//將列名第一個字母大寫(為什麼加+""呢?為了把char型別轉換為String型別。replace的引數是String型別。)
colName=colName.replace(colName.charAt(0)+"", new String(colName.charAt(0)+"").toUpperCase());
//設定方法名
String methodName="set"+colName;
//獲取當前位置的值,返回Object型別
Object value=rs.getObject(i);
//利用反射機制,生成setXX()方法的Method物件並執行該setXX()方法。
Method method=obj.getClass().getMethod(methodName, value.getClass());
method.invoke(obj, value);
}
list.add(obj);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally{
return list;
}
}