将任意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 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;
    }
} 
  

                            
                        
                    
                    
                    

你可能感兴趣的:(java,java,jdbc,mysql)