Apache camel 阿帕奇骆驼&x27;s sql使用者:如何将参数传递给查询?
假设我有一条路线:Apache camel 阿帕奇骆驼&x27;s sql使用者:如何将参数传递给查询?,apache-camel,Apache Camel,假设我有一条路线: <route> <from uri="sql:select orderid from Orders where date = '20140606'"/> <split> <simple>${body}</simple> <process ref="orderProcessor"/> </split> </route> 这意味着每天当我开始申请时,日期都会自动改变 令我惊讶的是,我
<route>
<from uri="sql:select orderid from Orders where date = '20140606'"/>
<split>
<simple>${body}</simple>
<process ref="orderProcessor"/>
</split>
</route>
这意味着每天当我开始申请时,日期都会自动改变
令我惊讶的是,我发现当“sql”端点用作使用者时,它是不可能的。如果sql用作生产者,而不是使用者,我可以将参数作为标头传递。还是我错了,这是可能的
顺便说一句,我更喜欢使用“sql”作为使用者,因为它方便地允许对使用选项“consumer.onConsume”检索的每一行执行和更新查询(请参阅:) 消费者端点(from
)是静态的,这就是为什么${date:now:yyyyMMdd}
不起作用的原因
使用Java DSL,在这里您拥有所有的灵活性:
String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
from("sql:select orderid from Orders where date = '" + today + '")
.split(...);
或使用生产者终结点(至
):
${日期:现在:yyyyMMdd}
${body}
编辑:
或者,您可以使用DB特定的日期函数。使用Oracle DB,这将类似于:
<from uri="sql:select orderid from Orders where date = to_date(to_char(current_date),'dd-mon-yy')" />
消费者端点(中的是静态的,这就是为什么${date:now:yyyyMMdd}
不起作用的原因
使用Java DSL,在这里您拥有所有的灵活性:
String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
from("sql:select orderid from Orders where date = '" + today + '")
.split(...);
或使用生产者终结点(至
):
${日期:现在:yyyyMMdd}
${body}
编辑:
或者,您可以使用DB特定的日期函数。使用Oracle DB,这将类似于:
<from uri="sql:select orderid from Orders where date = to_date(to_char(current_date),'dd-mon-yy')" />
所以您不希望它是动态的,只在应用程序启动时设置?所以您不希望它是动态的,只在应用程序启动时设置?是的,我使用的是第二种解决方案。我只是想如果那是唯一的解决办法。我更喜欢使用sql asconsumer和xml dsl。@kachanov将我的Oracle DB示例视为附加选项。是的,我正在使用第二种解决方案。我只是想如果那是唯一的解决办法。我更喜欢使用sql asconsumer和xml dsl。@kachanov将我的Oracle DB示例视为附加选项。