原始创建jdbc以及获取数据ResultSet转换成list

package com.comtop.map.store.mobile.service.impl;

import com.comtop.map.store.utils.JsonUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class test {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //依次输入数据库地址,用户名,密码
            connection = DriverManager.getConnection("jdbc:mysql://10.10.XX.XXX/dbName?useUnicode=true&characterEncoding=utf-8&useSSL=false", "user", "password");
            statement = connection.createStatement();
            boolean b = statement.execute(" select * from app_example");

            if (b) {
                ResultSet resultSet = statement.getResultSet();
                List list = convertList(resultSet);
                System.out.println(JsonUtils.toJSON(list));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private static List convertList(ResultSet rs) throws SQLException {
        List list = new ArrayList();
        ResultSetMetaData md = rs.getMetaData();//获取键名
        int columnCount = md.getColumnCount();//获取行的数量
        while (rs.next()) {
            Map rowData = new HashMap();
            for (int i = 1; i <= columnCount; i++) {
                rowData.put(md.getColumnName(i), rs.getObject(i));
            }
            System.out.println();
            list.add(rowData);
        }
        return list;
    }
}

查询打印出来的json数据如下

[
    {
        "del_flag": "1", 
        "example_id": 493924268761104, 
        "dept_name": null, 
        "img_ids": "bWFwc3RvcmUxL00wMC8wMC8zMC9DZ29QYlZ2VUlFbUFmNXFfQUFCcS1yeDFrQUU2NTYwMDU3", 
        "sort": null, 
        "create_date": 1540628580000, 
        "title": "推广试用", 
        "app_id": 497789192642576, 
        "update_date": 1543474656000, 
        "content": null
    }, 
    {
        "del_flag": "0", 
        "example_id": 518333048934416, 
        "dept_name": null, 
        "img_ids": "bWFwc3RvcmUxL00wMC8wQi83NC9DZ29QYlZ3dkRtYUFNQXlJQUFIQ2xLYVBPZjQyMjcwMjQ3", 
        "sort": null, 
        "create_date": 1546587755000, 
        "title": "应急案例标题1", 
        "app_id": 518326633852944, 
        "update_date": 1546587755000, 
        "content": null
    }, 
    {
        "del_flag": "0", 
        "example_id": 518368134402064, 
        "dept_name": null, 
        "img_ids": "bWFwc3RvcmUxL00wMC8wQi83Ni9DZ29QYlZ3dkw5eUFYN25jQUFDNEV4OEl1X1UyNTI0OTk1", 
        "sort": null, 
        "create_date": 1546596320000, 
        "title": "exmobi", 
        "app_id": 518353706508304, 
        "update_date": 1547688240000, 
        "content": null
    }
]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将ResultSet转换为List对象,可以使用反射来实现。首先,需要定义一个静态方法resultSetToList,该方法接受一个ResultSet对象和一个Class对象作为参数。然后,在方法内部创建一个空的List对象,用于存储转换后的结果。接下来,使用while循环遍历ResultSet对象的每一行数据。在循环内部,利用反射创建一个实例化对象,并获取该对象的所有属性。然后,使用反射为每个属性赋值,将ResultSet中对应的列的值赋给对象的属性。最后,将转换后的对象添加到List中。最后,返回转换后的List对象。 以下是一个示例代码: ```java import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class ResultSetToList { public static <T> List<T> resultSetToList(ResultSet rs, Class<T> cls) { List<T> list = new ArrayList<T>(); try { while (rs.next()) { T obj = cls.newInstance(); Field[] fields = cls.getDeclaredFields(); for (Field fd : fields) { fd.setAccessible(true); fd.set(obj, rs.getObject(fd.getName())); } list.add(obj); } } catch (SQLException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return list; } } ``` 以上代码中,我们定义了一个ResultSetToList类,并在该类中实现了一个静态方法resultSetToList。该方法接受一个ResultSet对象和一个Class对象作为参数,并返回一个转换后的List对象。在方法内部,我们使用反射来实现ResultSetList的转换。首先,我们创建一个空的List对象,用于存储转换后的结果。然后,使用while循环遍历ResultSet对象的每一行数据。在循环内部,我们利用反射创建一个实例化对象,并获取该对象的所有属性。然后,使用反射为每个属性赋值,将ResultSet中对应的列的值赋给对象的属性。最后,将转换后的对象添加到List中。最后,返回转换后的List对象。 请注意,该方法要求数据库的列名必须和Java实体类的属性名、类型完全一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值