resultSet与实体类和JSON之间的相互转化
2016-12-30 15:09
357 查看
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());
}
}
}
}
ae35
}
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;
}
}
实现很简单,就是把查询结果ResultSet的每一条数据转换成一个json对象,数据中的每一列的列名和值组成键值对,放在对象中,最后把对象组织成一个json数组。
public String resultSetToJson(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.toString();
- }
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());
}
}
}
}
ae35
}
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;
}
}
实现很简单,就是把查询结果ResultSet的每一条数据转换成一个json对象,数据中的每一列的列名和值组成键值对,放在对象中,最后把对象组织成一个json数组。
public String resultSetToJson(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.toString();
- }
相关文章推荐
- java中实体类和JSON对象之间相互转化
- 实体类和JSON对象之间相互转化
- json:实体类和JSON对象之间相互转化
- 实体类和JSON对象之间相互转化
- 实体类和JSON对象之间相互转化
- Go_14:GoLang中 json、map、struct 之间的相互转化
- json数据与实体类之间的相互转换
- Java 中 Map与JavaBean实体类之间的相互转化
- Java 算法 JSON Bean相互转化及JSON生成实体类
- json与对象之间的相互转化
- json <--->List集合,实体类 之间的相互转换
- GoLang中 json、map、struct 之间的相互转化
- JavaScript中json对象和string对象之间相互转化
- JavaScript对象,JSON对象,JSON字符串之间的相互转化大全{包含三者的具体介绍和定义}
- json <--->List集合,实体类 之间的相互转换
- Java 算法 JSON Bean相互转化及JSON生成实体类
- 字符串与json之间的相互转化
- JavaScript中json对象和string对象之间相互转化
- Java 中 Map与JavaBean实体类之间的相互转化
- json <--->List集合,实体类 之间的相互转换