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[]
methods = dto.getClass().getMethods();
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
);
}
while
(rs.next()) {
for
(
int
i =
0
;
i < columnNames.length; i++) {
String
setMethodName =
"set"
+ columnNames[i];
for
(
int
j =
0
;
j < methods.length; j++) {
if
(methods[j].getName().equalsIgnoreCase(setMethodName)) {
setMethodName
= methods[j].getName();
Object
value = rs.getObject(columnNames[i]);
try
{
if
(value
!=
null
)
{
Method
setMethod = dto.getClass().getMethod(
setMethodName,
value.getClass());
setMethod.invoke(dto,
value);
}
}
catch
(Exception e) {
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
{
JSONArray
array =
new
JSONArray();
ResultSetMetaData
metaData = rs.getMetaData();
int
columnCount = metaData.getColumnCount();
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
{
JSONObject
jsonObj =
new
JSONObject();
ResultSetMetaData
metaData = rs.getMetaData();
int
columnCount = metaData.getColumnCount();
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;
}
}