我需要创建一个由 jdbc:outbound-channel-adapter 执行的动态更新语句,因为我需要使用具有可变数量条件的 case 表达式设置一个字段,如下所示:
UPDATE tableA
SET fieldA = CASE
WHEN fieldB IN ('a','b') THEN 1
WHEN fieldB IN ('c','d') THEN 2
...
WHEN fieldB IN (...) THEN N
END
WHERE fieldC = :headers[MY_FIELDC]
我可以在 Spring 表达式中创建此动态更新语句,如下所示:
"'UPDATE tableA SET fieldA = ' + headers[MY_CASE_EXP] + ' WHERE fieldC = :headers[MY_FIELDC]'"
但是查询属性似乎不支持 Spring 表达式。
如何生成供 jdbc:outbound-channel-adapter 使用的动态查询?