如何使用ESB中的数据库连接器检索数据

时间:2019-12-11 06:20:06

标签: mule esb anypoint-studio

enter image description here

我试图通过调用存储过程并将其记录下来从数据库中检索雇员的姓名。 但是,不是名称,而是日志的输出:

INFO  2019-12-11 11:48:39,994 [[MuleRuntime].cpuLight.10: [testrun].testrunFlow.CPU_LITE @3bc66a50] [event: 0-12970c00-1bde-11ea-92a5-38dead78b440] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 
org.mule.runtime.core.internal.message.DefaultMessageBuilder$MessageImplementation
{
  payload=org.mule.extension.db.internal.result.statement.CloseableMap@8194c34
  mediaType=application/java; charset=UTF-8
  attributes=<not set>
  attributesMediaType=*/*
}

我可以进行哪些更改,以便从数据库中接收名称列表。

1 个答案:

答案 0 :(得分:1)

默认情况下,您的数据库连接器返回一个结果集。通过在DB调用之后添加一个转换器将您的结果集转换为json并将输出类型设置为json。如果只需要一个特定字段,则需要相应地进行转换

enter image description here

enter image description here

正如您在记录器中看到的那样,它提到了有效负载类型 payload=org.mule.extension.db.internal.result.statement.CloseableMap@8194c34

是从存储过程读回的结果集的内部表示。因此只需将其转换为json或您想要的任何格式。在数据库调用之后放置一个转换消息组件,然后执行以下操作:

%dw 2.0
output application/json
---
payload

如果您想要任何特定的字段或东西,那么您可以查看有效负载的结构并相应地进行数据编织