动态更新jdbc:inbound-channel-adapter查询语句

时间:2014-03-12 14:18:06

标签: spring-integration

我们正在使用jdbc:inbound-channel-adapterpoller从表格中进行选择。要求是选择具有特定范围内的时间戳的行。每次轮询数据库时都必须更新该范围(因此行不会被读取两次)。最初我设想有一个单独的表来存储日期时间,并使用适配器的update属性来更新此表。然后,此值将在query属性中定义的SELECT语句中使用,作为针对主表的WHERE子句的一部分。

我们现在被告知,虽然我们将具有对主表的读访问权限,但我们不会被授予向现有模式添加任何内容或具有写权限的权限。这排除了使用单独的表来连续更新主SQL查询使用的时间戳。

query属性中定义一些将返回动态生成的SELECT语句的SpEL的选项也不起作用。这是因为Spel只会在Spring加载时进行一次评估。

是否有另一种方法可以动态更新query属性中的SQL?

否则,此用例的正确策略是什么,每次轮询数据库时,适配器使用的SQL必须更改?

由于

1 个答案:

答案 0 :(得分:0)

您可以将参数源添加到适配器并使用以下查询:

"SELECT * from FOO where KEY=:key"

参见属性select-sql-parameter-source

您可以编写自己的参数来源,但也可以参阅ExpressionEvaluatingSqlParameterSourceFactory