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

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

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

2019-11-14 10:42:26
字體:
供稿:網(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ā)表
主站蜘蛛池模板: 民县| 普洱| 黄骅市| 宣恩县| 乌兰浩特市| 中西区| 宁河县| 新田县| 新邵县| 繁昌县| 化隆| 阳信县| 潜山县| 阿拉尔市| 尉氏县| 遵化市| 峡江县| 伊宁市| 无棣县| 九龙坡区| 普兰店市| 汨罗市| 宿松县| 沛县| 宝丰县| 永川市| 铁岭县| 舞阳县| 红安县| 卫辉市| 海门市| 南木林县| 布拖县| 监利县| 双城市| 加查县| 定远县| 汝南县| 荥经县| 太仆寺旗| 沂源县|