这是接单的时候写的,一个工具类,参数一个是结果集,另一个是实体类对象的class对象。返回的是这个对象的集合。这个不适用于嵌套这类。也许可以再此基础上改改。
package com.echart.utlls;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
public class RsConvertList {
//resultToList方法
public static List<?> resultToList(ResultSet resultSet, Class clazz) {
//创建一个 T 类型的数组
List<Object> list = new ArrayList<>();
try {
//获取resultSet 的列的信息
ResultSetMetaData metaData = resultSet.getMetaData();
//遍历resultSet
while (resultSet.next()) {
//遍历每一列
//通过反射获取对象的实例
Object t = clazz.newInstance();
for (int i = 0; i < metaData.getColumnCount(); i++) {
//获取列的名字
String fName = metaData.getColumnLabel(i + 1);
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (fName.equals(field.getName())) {
Object obj = resultSet.getObject(fName);
field.setAccessible(true);
//可以根据自己的需求添加几个
if (field.getType().getName().equals("java.lang.Integer")) {
field.set(t, Integer.parseInt(String.valueOf(obj)));
}
if (field.getType().getName().equals("java.lang.String")) {
field.set(t, String.valueOf(obj).equals("null") ? " ": String.valueOf(obj));
}
field.setAccessible(false);
}
}
}
//把赋值后的对象 加入到list集合中
list.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}
// 返回list
return list;
}
}