java程序:在一个方法类传入Class和Result对象,如何将结果集以List对象返回
时间: 2023-06-04 20:04:51 浏览: 53
您好,这是一个技术类问题,我可以尝试为您提供答案。
实现该方法的关键在于使用Java反射机制获取Class对象中的方法及参数,然后根据参数类型调用不同的方法,最终将结果集转换为List对象返回。以下是示例代码:
```java
public List<Object> getResultList(Class<?> clazz, Result<?> result) throws Exception {
List<Object> resultList = new ArrayList<>();
Method method = clazz.getDeclaredMethod("getResultSet");
Object resultSet = method.invoke(result);
if(resultSet instanceof ResultSet) {
while(((ResultSet) resultSet).next()) {
Object row = clazz.newInstance();
Method[] methods = clazz.getDeclaredMethods();
for(Method m : methods) {
String methodName = m.getName();
if(methodName.startsWith("set")) {
Class<?>[] parameterTypes = m.getParameterTypes();
if(parameterTypes.length == 1) {
String fieldName = methodName.substring(3, 4).toLowerCase()
+ methodName.substring(4);
if(parameterTypes[0] == String.class) {
m.invoke(row, ((ResultSet) resultSet).getString(fieldName));
} else if(parameterTypes[0] == int.class) {
m.invoke(row, ((ResultSet) resultSet).getInt(fieldName));
} else if(parameterTypes[0] == double.class) {
m.invoke(row, ((ResultSet) resultSet).getDouble(fieldName));
} //加入其他类型的判断
}
}
}
resultList.add(row);
}
}
return resultList;
}
```
希望能对您有所帮助。