将任意ResultSet转换成与之对应的对象集合

 

这是接单的时候写的,一个工具类,参数一个是结果集,另一个是实体类对象的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;
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用反射将ResultSet转换成Java对象的一般步骤如下: 1. 获取Java对象的Class对象。 2. 获取Class对象的所有属性。 3. 遍历ResultSet中的每一行数据。 4. 对于每一行数据,使用Class对象的newInstance()方法创建一个Java对象。 5. 遍历Class对象的所有属性,并使用ResultSet的getXXX()方法将ResultSet中的数据赋值给Java对象的属性。 6. 将Java对象添加到List中或返回单个对象。 下面是一个示例代码: ```java public List<Object> resultSetToObjects(ResultSet rs, Class<?> clazz) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException { List<Object> objects = new ArrayList<>(); Field[] fields = clazz.getDeclaredFields(); while (rs.next()) { Object object = clazz.newInstance(); for (Field field : fields) { field.setAccessible(true); String name = field.getName(); Object value = rs.getObject(name); field.set(object, value); } objects.add(object); } return objects; } ``` 在上面的示例代码中,我们定义了一个resultSetToObjects方法,该方法使用反射将ResultSet转换成Java对象。首先,我们获取Java对象的Class对象和所有属性。然后,遍历ResultSet中的每一行数据,在每一行数据中使用Class对象的newInstance()方法创建一个Java对象。接着,遍历Class对象的所有属性,并使用ResultSet的getXXX()方法将ResultSet中的数据赋值给Java对象的属性。最后,将Java对象添加到List中并返回。需要注意的是,我们需要使用field.setAccessible(true)来允许访问私有属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值