Spring集成 – 外部化JDBC查询
有没有一种简单的方法可以从jdbc出站网关外部化大sql查询,而不是内联它? 原因是我们需要做很多大的查询,我们希望将它们放在自己的文件中,或者至少将它们外化到bean中。
一些警告:
- 我无法控制数据库,所以我无法在那里创建任何东西(例如存储过程)
- 我不想仅为这个问题创建类,我只是想组织/重构它,而不是让它更复杂,引入许多其他步骤
- 我更喜欢创建裸.sql文件,但是将查询放在带有bean的xml中也是可以的
- 我没有选择使用hibernate,坚持使用spring集成jdbc
关于如何更好地组织这个的建议,考虑到我们将有许多其他出站网关,欢迎:)
例如,我不希望在“int-jdbc:outbound-gateway”元素中使用SQL内联,如下所示:
我用答案做了什么
只是:
它也适用于bean内部使用的“:payload”参数。
您可以将XML中的查询定义为spring bean:
使用CDATA,查询文本可以包括换行符,尖括号等,因此它清晰易读,您可以将其直接剪切并粘贴到SQL工具中。
您可以使用SpEL引用bean。
是的,您可以将它们放在属性文件中,并使用属性占位符${...}
来解决它们,或者您可以使用SpEL …
"#{myQueryBean.queryOne}"
其中myQueryBean
是一个
,它是一个带有方法的类的实例……
public String getQueryOne() {...}
或类上的静态常数……
"#{T(foo.Queries).QUERY_ONE}" public static final String QUERY_ONE = "...";