当使用SpringJDBC时,用java干净的方式外部化长(+20行sql)?
我想将应用程序中的一些大型查询外部化为properties\sql\xml文件。然而,我想知道是否有人对如何以干净的方式实现这一点有一些建议。大多数结果建议使用ORM框架,但由于一些数据限制,这不适用
我看了一下:Java - Storing SQL statements in an external file但是对一些查询执行propertyname.1、.2等操作,每个查询的长度都超过了20行,看起来并不是很干净
# 1 楼答案
您可以在属性文件中执行多行查询,方法是将\放在行的末尾。比如说
# 2 楼答案
这是对Pankaj has answered的补充。这一个在属性XML中没有CDATA,并且使用自动连接。我必须添加这个作为答案,因为如果我必须在注释部分这样做,我无法格式化代码
确保在spring应用程序上下文xml文件中有以下名称空间
将以下bean添加到spring应用程序上下文xml中
文件
sqls.xml
的内容为自动连接属性,如下所示
从属性获取sql查询的代码
# 3 楼答案
您可以将查询放入xml文件中
在Spring应用程序上下文中,加载此xml文件
在DAO类中注入这个bean
在DAO类中定义queryProps,不要忘记为此使用setter方法
现在您可以像这样访问DAO中的查询-
希望这有帮助
# 4 楼答案
在JdbcTestUtils拿走一点战利品 方法“executeSqlScript”和“readScript”
# 5 楼答案
不久前,我遇到了同样的问题,并提出了YAML。它支持多行字符串属性值,因此您可以在查询文件中编写类似的内容:
这里,
selectSomething
和insertSomething
是查询名称。所以它非常方便,并且包含很少的特殊字符。查询由空行分隔,每个查询文本必须缩进。请注意,查询完全可以包含自己的缩进,因此以下内容完全有效:然后,您可以在SnakeYAML库的帮助下,使用以下代码将文件内容读入哈希映射:
在上面的示例中,创建了映射映射,将每个YAML文件映射到包含查询名称/字符串的映射