resultset結果集轉化為json原始碼
阿新 • • 發佈:2019-02-17
下載包連結:
http://download.csdn.net/detail/ruthywei/9876958
http://download.csdn.net/detail/yangs_1235/5049404
需要匯入的包為
mysql-connector-java-5.1.7-bin.jar //JDBC包用於連線資料庫
用於resultset結果集轉化為json資料格式的包
其中,json-lib-2.4-jdk15.jar 用於匯入net.sf.json.JSONArray和net.sf.json.JSONObject
json-rpc-1.0.jar用於匯入org.json.JSONArray和org.json.JSONObject
兩者之間的方法有所不同,有興趣可以自行查詢。
原始碼如下:
package com.eabax.plugin.yundada.utils; import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class ResultSetTool { /** * 將resultSet轉化為實體類(實體欄位全為String型別) * @param rs * @param dto * @return * @throws Exception */ public static <T> T bindDataToDTO(ResultSet rs, T dto) throws Exception { //取得Method方法 Method[] methods = dto.getClass().getMethods(); //取得ResultSet的列名 ResultSetMetaData rsmd = rs.getMetaData(); int columnsCount = rsmd.getColumnCount(); String[] columnNames = new String[columnsCount]; for (int i = 0; i < columnsCount; i++) { columnNames[i] = rsmd.getColumnLabel(i + 1); } //遍歷ResultSet while (rs.next()) { //反射, 從ResultSet繫結到JavaBean for (int i = 0; i < columnNames.length; i++) { //取得Set方法 String setMethodName = "set" + columnNames[i]; //遍歷Method for (int j = 0; j < methods.length; j++) { if (methods[j].getName().equalsIgnoreCase(setMethodName)) { setMethodName = methods[j].getName(); Object value = rs.getObject(columnNames[i]); //實行Set方法 try { //JavaBean內部屬性和ResultSet中一致時候 if(value != null) { Method setMethod = dto.getClass().getMethod( setMethodName, value.getClass()); setMethod.invoke(dto, value); } } catch (Exception e) { //JavaBean內部屬性和ResultSet中不一致時候,使用String來輸入值。 Method setMethod = dto.getClass().getMethod( setMethodName, String.class); setMethod.invoke(dto, value.toString()); } } } } } return dto; } /** * 將resultSet轉化為JSON陣列 * @param rs * @return * @throws SQLException * @throws JSONException */ public static JSONArray resultSetToJsonArry(ResultSet rs) throws SQLException,JSONException { // json陣列 JSONArray array = new JSONArray(); // 獲取列數 ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); // 遍歷ResultSet中的每條資料 while (rs.next()) { JSONObject jsonObj = new JSONObject(); // 遍歷每一列 for (int i = 1; i <= columnCount; i++) { String columnName =metaData.getColumnLabel(i); String value = rs.getString(columnName); jsonObj.put(columnName, value); } array.put(jsonObj); } return array; } /** * 將resultSet轉化為JSONObject * @param rs * @return * @throws SQLException * @throws JSONException */ public static JSONObject resultSetToJsonObject(ResultSet rs) throws SQLException,JSONException { // json物件 JSONObject jsonObj = new JSONObject(); // 獲取列數 ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); // 遍歷ResultSet中的每條資料 if (rs.next()) { // 遍歷每一列 for (int i = 1; i <= columnCount; i++) { String columnName =metaData.getColumnLabel(i); String value = rs.getString(columnName); jsonObj.put(columnName, value); } } return jsonObj; } }