首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将HashMap对象转换为ResultSet

将HashMap对象转换为ResultSet
EN

Stack Overflow用户
提问于 2016-08-16 22:33:03
回答 2查看 1.2K关注 0票数 2

我知道这样问很愚蠢,但是我们有大量的遗留代码,需要ResultSet来处理数据,但是我们已经创建了另一个获取JSON格式数据的应用程序接口。我正在将JSON对象转换为HashMap,并将HashMap对象传递给DataProcessing的遗留代码。因为遗留代码总是期望ResultSet,所以我无法处理新数据。

EN

回答 2

Stack Overflow用户

发布于 2016-08-16 22:36:07

您将需要创建Interface ResultSet的自定义实现

票数 4
EN

Stack Overflow用户

发布于 2019-01-11 01:58:41

要做到这一点,唯一的方法是将ResultSet子类化,通过添加添加数据的方法来创建另一个类,该类可以使用SQL查询的结果以外的数据创建。

如果这对你来说太复杂或太耗时,就像对我一样,你可以找到别人已经写好并发表过的。

我已经成功地使用了Mockrunner:

http://mockrunner.github.io

下面是我是如何实现它的:

使用静态方法创建一个类,以从标头列表和数据数组返回ResultSet:

代码语言:javascript
运行
复制
package com.mypackage;

import java.sql.ResultSet;
import java.util.List;

import com.mockrunner.mock.jdbc.MockResultSet;

public class OkResultSet {

public static ResultSet getResultSet(List<String> headers, List<List<Object>> data) throws Exception 
{
    if (headers == null || data == null) {
        throw new Exception("null parameters");
    }

    List<Object> firstList = data.get(0);

    if (headers.size() != firstList.size()) {
        throw new Exception("parameter sizes are not equal");
    }

    MockResultSet mockResultSet = new MockResultSet("okResultSet");

    for (String string : headers) {         
        mockResultSet.addColumn(string);
    }

    for (List<Object> list : data) {
        mockResultSet.addRow(list);
    }

    return mockResultSet;
    }
}

在我的代码中构造一个头列表和一个数据数组,并调用新方法来创建一个ResultSet,然后我可以将其传递给遗留代码:

代码语言:javascript
运行
复制
List<String> headers = new ArrayList<String>();
headers.add("Question");
headers.add("ResponseType");
headers.add("ChecklistType");
headers.add("Required");

List<List<Object>> data = new ArrayList<List<Object>>();
for (int i = 0; i < questionArray.size(); i++) {
    JSONObject questionObject = (JSONObject)questionArray.get(i);
    String question = (String)questionObject.get("Question");
    String responseType = (String)questionObject.get("ResponseType");
    String checklistType = (String)questionObject.get("ChecklistType");
    String required = (String)questionObject.get("Required");

    List<Object> objects = new ArrayList<Object>();
    objects.add(question);
    objects.add(responseType);
    objects.add(checklistType);
    objects.add(required);
    data.add(objects);
}

ResultSet finalResultSet = null;
try {
    finalResultSet = OkResultSet.getResultSet(headers, data);
} catch (Exception e) {
    LOGGER.warn("parseJobsetForChecklistQuestions | error "+e.getMessage());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38977694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档