java反射機制解決資料庫查詢結果到Model類
package com.Android.util;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
public class GetData {
public static List resultSetToList(ResultSet rs, Class<?> cls)
throws Exception {
// 取得Method
Method[] methods = cls.getMethods();// 獲得bean的所有方法
List list = new ArrayList();
// 用於獲取列數、或者列型別
ResultSetMetaData meta = rs.getMetaData();
Object obj = null;
while (rs.next()) {
// 獲取formbean例項物件
obj = cls.newInstance(); // 用Class.forName方法例項化物件和new建立例項化物件是有很大區別的,它要求JVM首先從類載入器中查詢類,然後再例項化,並且能執行類中的靜態方法。而new僅僅是新建一個物件例項
// 迴圈獲取指定行的每一列的資訊
for (int i = 1; i <= meta.getColumnCount(); i++) {
// 當前列名
String colName = meta.getColumnName(i);
// 設定方法名
String setMethodName = "set" + colName;
// 遍歷Method
Method setMethod = null;
for (int j = 0; j < methods.length; j++) {
if (methods[j].getName().equalsIgnoreCase(setMethodName)) { // 比較列名
setMethodName = methods[j].getName();
setMethod = methods[j];
// 獲取當前位置的值,返回Object型別
Object value = rs.getObject(colName);
if (value == null) {
continue;
}
// 實行Set方法
try {
// // 利用反射獲取物件
// JavaBean內部屬性和ResultSet中一致時候
setMethod.invoke(obj, value);
break;
} catch (Exception e) {
// JavaBean內部屬性和ResultSet中不一致時候,使用String來輸入值。
e.printStackTrace();
setMethod.invoke(obj, value.toString());
}
}
}
}
list.add(obj);
}
return list;
}
public static Object resultSetToBean(ResultSet rs, Class cls)
throws Exception {
// 取得Method
Method[] methods = cls.getMethods();// 獲得bean的所有方法
// 用於獲取列數、或者列型別
ResultSetMetaData meta = rs.getMetaData();
Object obj = null;
if (rs.next()) {
// 獲取formbean例項物件
obj = cls.newInstance(); // 用Class.forName方法例項化物件和new建立例項化物件是有很大區別的,它要求JVM首先從類載入器中查詢類,然後再例項化,並且能執行類中的靜態方法。而new僅僅是新建一個物件例項
// 迴圈獲取指定行的每一列的資訊
for (int i = 1; i <= meta.getColumnCount(); i++) {
// 當前列名
String colName = meta.getColumnName(i);
// 設定方法名
String setMethodName = "set" + colName;
// 遍歷Method
Method setMethod = null;
for (int j = 0; j < methods.length; j++) {
if (methods[j].getName().equalsIgnoreCase(setMethodName)) { // 比較列名
setMethodName = methods[j].getName();
setMethod = methods[j];
// 獲取當前位置的值,返回Object型別
Object value = rs.getObject(colName);
if (value == null) {
continue;
}
// 實行Set方法
try {
// // 利用反射獲取物件
// JavaBean內部屬性和ResultSet中一致時候
setMethod.invoke(obj, value);
break;
} catch (Exception e) {
// JavaBean內部屬性和ResultSet中不一致時候,使用String來輸入值。
e.printStackTrace();
setMethod.invoke(obj, value.toString());
}
}
}
}
}
return obj;
}
}
相關文章
- JAVA資料庫處理(連線,資料查詢,結果集返回)Java資料庫
- 如何分頁顯示資料庫查詢結果?資料庫
- C# dataGridView展示資料庫查詢結果C#View資料庫
- Java中的類反射機制Java反射
- Java 反射機制學習資料Java反射
- Java資料庫分表與多執行緒查詢結果彙總Java資料庫執行緒
- Java 反射機制詳解Java反射
- 從Java反射機制到Android註解框架Java反射Android框架
- 使用navicat匯出查詢大量資料結果集並匯入到其他資料庫(mysql)資料庫MySql
- Oracle資料庫PL/SQL Developer查詢結果顯示問號亂碼的解決方法Oracle資料庫SQLDeveloper
- Java註解與反射機制Java反射
- JAVA的反射機制==>用反射分析類的實現Java反射
- Java 從入門到精通-反射機制Java反射
- ps aux查詢結果解釋UX
- Java反射機制Java反射
- mybatis執行查詢語句查詢不到結果,控制檯輸出sql語句複製到資料庫中能查到資料MyBatisSQL資料庫
- UPDATE查詢結果範圍內的資料
- 利用資料泵匯出查詢結果(二)
- 利用資料泵匯出查詢結果(一)
- JAVA中的反射機制詳解Java反射
- 用sh列表顯示oracle資料庫單條查詢結果(轉)Oracle資料庫
- 記錄oracle中查詢資料0.xx結果為.xx的解決辦法Oracle
- Java安全基礎之Java反射機制和ClassLoader類載入機制Java反射
- Java核心反射機制Java反射
- java利器——反射機制Java反射
- Java的反射機制Java反射
- Java反射機制(轉)Java反射
- Java反射機制研究Java反射
- 深入理解Java:類載入機制及反射Java反射
- mybatis查詢mysql 資料庫中 BLOB欄位,結果出現亂碼MyBatisMySql資料庫
- Java反射機制開發經驗總結Java反射
- Query.js - 類SQL前端資料查詢類庫JSSQL前端
- mysql查詢結果多列拼接查詢MySql
- 判斷 Eloqument 模型查詢資料結果是否為空模型
- 類載入機制與反射反射
- oracle 資料庫,能不能將查詢的結果建立成新表。Oracle資料庫
- Java反射機制那些事Java反射
- Java 中的 反射機制Java反射