【发布时间】:2016-11-19 14:03:05
【问题描述】:
我想使用数据库连接器为同一个数据库的 3 个表编写选择和插入查询。我想知道是否有替代方案或如何使用 1 个数据库连接器来完成?
我最终使用了 5 个数据库连接器。但我认为这会使流程看起来很复杂。有没有其他方法可以做到这一点。
【问题讨论】:
标签: mule database-connection mule-component
我想使用数据库连接器为同一个数据库的 3 个表编写选择和插入查询。我想知道是否有替代方案或如何使用 1 个数据库连接器来完成?
我最终使用了 5 个数据库连接器。但我认为这会使流程看起来很复杂。有没有其他方法可以做到这一点。
【问题讨论】:
标签: mule database-connection mule-component
你走错路了:)
它可以通过单个 DB 连接器执行 3 种不同的操作来实现。
请在这里阅读文档:- https://docs.mulesoft.com/mule-user-guide/v/3.8/database-connector
您需要定义连接您的数据库的单个全局数据库连接器:-
<db:generic-config name="GlobalDB_Config" url="jdbc:sqlserver://${mssql.server}:${mssql.port};databaseName=${mssql.database};user=${mssql.user};password=${mssql.password}" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" doc:name="Generic Database Configuration"/>
然后您可以在流程中使用引用相同全局数据库连接器的不同数据库组件执行不同的操作(选择、插入、更新等):-
<db:insert config-ref="GlobalDB_Config">
<db:parameterized-query>INSERT INTO TABLE1(POSITION, NAME) VALUES (777, #[payload])</db:parameterized-query>
</db:insert>
或
<db:select config-ref="GlobalDB_Config">
<db:parameterized-query><![CDATA[SELECT POSITION from TABLE1 WHERE NAME = '#[message.inboundProperties['NAME']]></db:parameterized-query>
</db:select>
【讨论】:
db:bulk-execute 的选项,您可以在其中定义多个查询... ref:- docs.mulesoft.com/mule-user-guide/v/3.5/… ... 但有一些限制,例如:- 它只支持插入、删除、更新操作并且在动态查询中使用它时存在错误:- forums.mulesoft.com/questions/33091/… ...不确定现在是否已修复