国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

java反射機(jī)制解決數(shù)據(jù)庫查詢結(jié)果到Model類

2019-11-14 11:12:11
字體:
供稿:網(wǎng)友
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(); // 用于獲取列數(shù)、或者列類型 ResultSetMetaData meta = rs.getMetaData(); Object obj = null; while (rs.next()) { // 獲取formbean實例對象 obj = cls.newInstance(); // 用Class.forName方法實例化對象和new創(chuàng)建實例化對象是有很大區(qū)別的,它要求JVM首先從類加載器中查找類,然后再實例化,并且能執(zhí)行類中的靜態(tài)方法。而new僅僅是新建一個對象實例 // 循環(huán)獲取指定行的每一列的信息 for (int i = 1; i <= meta.getColumnCount(); i++) { // 當(dāng)前列名 String colName = meta.getColumnName(i); // 設(shè)置方法名 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]; // 獲取當(dāng)前位置的值,返回Object類型 Object value = rs.getObject(colName); if (value == null) { continue; } // 實行Set方法 try { // // 利用反射獲取對象 // JavaBean內(nèi)部屬性和ResultSet中一致時候 setMethod.invoke(obj, value); break; } catch (Exception e) { // JavaBean內(nèi)部屬性和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的所有方法 // 用于獲取列數(shù)、或者列類型 ResultSetMetaData meta = rs.getMetaData(); Object obj = null; if (rs.next()) { // 獲取formbean實例對象 obj = cls.newInstance(); // 用Class.forName方法實例化對象和new創(chuàng)建實例化對象是有很大區(qū)別的,它要求JVM首先從類加載器中查找類,然后再實例化,并且能執(zhí)行類中的靜態(tài)方法。而new僅僅是新建一個對象實例 // 循環(huán)獲取指定行的每一列的信息 for (int i = 1; i <= meta.getColumnCount(); i++) { // 當(dāng)前列名 String colName = meta.getColumnName(i); // 設(shè)置方法名 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]; // 獲取當(dāng)前位置的值,返回Object類型 Object value = rs.getObject(colName); if (value == null) { continue; } // 實行Set方法 try { // // 利用反射獲取對象 // JavaBean內(nèi)部屬性和ResultSet中一致時候 setMethod.invoke(obj, value); break; } catch (Exception e) { // JavaBean內(nèi)部屬性和ResultSet中不一致時候,使用String來輸入值。 e.printStackTrace(); setMethod.invoke(obj, value.toString()); } } } } } return obj; }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新巴尔虎左旗| 封开县| 汽车| 同德县| 思茅市| 出国| 崇明县| 阜宁县| 江永县| 寿宁县| 常宁市| 饶阳县| 梧州市| 嘉义市| 平原县| 萨迦县| 吕梁市| 东安县| 若尔盖县| 定州市| 南京市| 秦安县| 华阴市| 台中市| 台中县| 宜都市| 孟州市| 福鼎市| 新余市| 万安县| 淮安市| 开远市| 康平县| 青龙| 新建县| 肥城市| 漯河市| 佳木斯市| 余干县| 贵南县| 从化市|