使用MuleSoft进行一些数据转换。相对较新的Java语言本身。经过多次谷歌搜索,我想在这里问。
从11g Oracle数据库中提取数据。我有一个数据库查询被发送到MuleMessage。根据AnyPoint studio,db查询的输出是List。
我可以以事件的形式成功调用java组件。关于如何提取有效载荷的内容以查看数据的位丢失了。我真的想将这些值添加到另一个列表映射中以进行进一步处理。
这是我的数据库查询:
select name, country
from test_customer a, test_country b
where a.id = b.id
我想把捕获名称和国家/地区,并将其放入我的地图中。然后地图会进入地图列表。
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函数来完成这项工作吗?
任何帮助将不胜感激!
答案 0 :(得分:1)
查询结果(如果使用数据库连接器)位于有效内容中,而不是入站属性中。所以你是&#34;搜索&#34;结果出错了。
结果可能是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");
但是,您应该调试组件并检查有效负载的正确类型。
答案 1 :(得分:0)
db组件的输出将是ListOfMap对象。
在实现Callable接口的java类中
DB组件的输出可以通过以下方式访问
List<Map<String,Object>> results = (List<Map<String,Object>>) eventContext.getMessage().getPayload();
答案 2 :(得分:0)
尝试以下格式......
public void AnalyseArray(ArrayList<Integer> array) {
// Do something
}
...
ArrayList<Integer> A = new ArrayList<Integer>();
AnalyseArray(A);