在mule中拆分数据库输出

问题描述 投票:-1回答:3

我有低于数据库输出,我如何拆分它。

 [{country=United States, accountID=4410, street=12345 Green Rd, state=Colorado, name=Dale Burgers, city=Boulder, postal=80305}, {country=United Kingdom, accountID=4411, street=capthorne Avenue, state=Harrow, name=Arjun, city=london, postal=ha29eb}, {country=usa, accountID=4412, street=elden st, state=va, name=Home Foods, city=herndon, postal=20170}, {country=usa, accountID=4413, street=herndon parkway, state=va, name=Home Foods 2, city=herndon, postal=20170}, {country=usa, accountID=4414, street=van barun st, state=va, name=home foods 3, city=herndon, postal=20170}, {country=United Kingdom, accountID=4415, street=355 E Capthorne Court, Alexandra Avenue, state=Harrow, name=Barkha , city=Haarow London, postal=ha29eb}, {country=Canada, accountID=4416, street=4130 Chromoly, state=BC, name=Spawn Cycles, city=Squamish, postal=L0L0L0}, {country=Canada, accountID=4417, street=1 Yonge Street, state=BC, name=Post Spawn, city=Vancouver, postal=L1L1L1}, {country=Canada, accountID=4418, street=1 Yonge Street, state=BC, name=Post Post Spawn, city=Vancouver, postal=L2L2L2}, {country=Canada, accountID=4419, street=1 Yonge Street, state=BC, name=Post Post Post Spawn, city=Vancouver, postal=L0L0L0}]

我尝试将JSON添加到Object Transformer,形成List类型和Collection splitter,但只传递了第一条记录。

 {country=United States, accountID=4410, street=12345 Green Rd, state=Colorado, name=Dale Burgers, city=Boulder, postal=80305}
database mule splitter
3个回答
0
投票

最简单的方法是使用json将json转换为java对象到对象转换器,它应该为您提供一组对象。然后,您可以使用Mule中的foreach处理器循环访问此集合。

希望这有帮助。


0
投票

数据库连接器以java.util.LinkedList格式返回值,如果要将结果按记录分割,则在数据库轮询组件之后使用For-each范围。请在下面找到示例代码段:

 <db:mysql-config name="MySQL_Configuration" host="hostname" port="3306" user="mule" password="welcome1" database="schema" doc:name="MySQL Configuration"/>
    <flow name="database-47729955Flow">
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="10" timeUnit="SECONDS"/>
            <db:select config-ref="MySQL_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[SELECT * FROM schema.table_name where B2B_REQUEST_TYPE='Send';]]></db:parameterized-query>
            </db:select>
        </poll>
        <foreach doc:name="For Each">
            <logger message="#['\n Database record is:'+payload]" level="INFO" doc:name="Logger"/>
            <logger message="#['\nNext record']" level="INFO" doc:name="Logger"/>
        </foreach>
    </flow>

问候,

斯里尼瓦斯B.


-1
投票

数据库输出应仅为List或Iterator。但是如果你得到JSON。您可以通过以下方式实现它

使用将返回List的Dataweave-

%dw 1.0
%output application/java
---
payload

使用将返回Dataweave MEL functionIterator (SplitIterator) -

<set-payload value="#[split('payload','application/json')]" doc:name="Set Payload"/>

使用JSON对象变换器 -

<json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/>

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.