import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ResultSetToList {
//定义静态方法,并根据泛型和反射,实现转换
//注意:要求数据库的列名必须和JAVA实体类的属性名、类型完全一致
public static <T> List<T> resultSetToList(ResultSet rs,Class<T> cls) {
//定义接收的集合
List<T> list = new ArrayList<T>();
//创建一个对象,方便后续反射赋值
Object obj=null;
try {
while (rs.next()) {
//利用反射获取,执行类的实例化对象
obj = cls.newInstance();
//利用反射,获取对象类信息中的所有属性
Field [] fields = cls.getDeclaredFields();
for(Field fd:fields){
//屏蔽权限
fd.setAccessible(true);
//为对象属性赋值
fd.set(obj,rs.getObject(fd.getName()));
}
}
//返回转换后的集合
list.add((T)obj);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
//返回集合
return list;
}
}
JAVA中将数据库查询的ResultSet结果集转为对象实体类的List集合(反射)
最新推荐文章于 2024-05-02 11:27:22 发布