gpt4 book ai didi

java - MuleSoft - 在java组件中访问数据库查询中的数据

转载 作者:行者123 更新时间:2023-12-01 11:46:11 27 4
gpt4 key购买 nike

使用MuleSoft进行一些数据转换。它和 Java 语言本身都相对较新。经过多次尝试谷歌搜索后,我想我应该在这里问。

从 11g Oracle 数据库中提取数据。我有一个数据库查询被发送到 MuleMessage 中。根据 AnyPoint studio 的说法,数据库查询的输出是 List。

我可以成功地以事件的形式调用java组件。不过,对于如何提取有效负载的内容来查看数据,我们有些困惑。我真的想将这些值添加到另一个列表映射中以进行进一步处理。

这是我的数据库查询:

select name, country
from test_customer a, test_country b
where a.id = b.id

我想捕获名称和国家/地区,并将其放入我的 map 中。然后该 map 将进入 map 列表。

package org.mule.transformers;
import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.lifecycle.Callable;
import org.mule.api.transformer.TransformerException;
import org.mule.transformer.AbstractMessageTransformer;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;


public class myTransformer implements Callable{
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {

MuleMessage message = eventContext.getMessage();
Object payload = new Object();
List<Map<String,String>> myList = new ArrayList<Map<String,String>>(); //list of maps
Map<String,String> myMap = new HashMap<String,String>(); //map that holds

String test;
String test2;

payload = message.getPayload();

test = message.getInboundProperty("name");
test2 = message.getInboundProperty("country");

myMap.put(test, test2);

myList.add(myMap);

return myList;
}
}

我想我只是不知道如何正确引用 MuleMessage 变量来提取此类数据。文档没有帮助,或者我只是读错了东西。

我必须使用 MEL 才能执行此操作吗?或者我可以使用一些java函数来完成这个任务吗?

如有任何帮助,我们将不胜感激!

最佳答案

查询结果(如果您使用数据库连接器)位于有效负载中,而不是入站属性中。所以您在错误的位置“搜索”结果。

结果可能在 List<Map<String,Object>> 中格式,因此您需要执行以下操作:

List<Map<String,Object>> results = (List<Map<String,Object>>) message.getPayload();

Map<String, Object> firstRow = results.get(0);

test = firstRow.get("name");
test2 = firstRow.get("country");

但是,您应该调试组件并检查有效负载的正确类型。

关于java - MuleSoft - 在java组件中访问数据库查询中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com