Java - 在代码中避免长SQL查询

Ste*_*han 9 java sql coding-style

在我的Java代码中,我有这样的东西:

ResultSet rs = statement.executeQuery(
                   "SELECT a,b,c FROM foo -- here starts the long query"+
                   " -- that is not yet finished " +
                   " -- that still has something to say... "+ 
                   " -- now the end !"
               );
Run Code Online (Sandbox Code Playgroud)

我想像这样清理我的代码:

ResultSet rs = statement.executeQuery(all_queries.getQuery("The very long one"));
Run Code Online (Sandbox Code Playgroud)

我读过那ResourceBundle是为了本地化.所以我不认为它符合我的情况.

应该all_queries是什么?

编辑: 对我来说最重要的是清理代码.

Kon*_*rus 11

我会把它放在一个带有sql扩展名的文件中并实现Queries如下:

Queries {
    static public String getQuery(String name) {
        return loadResource("/com/example/queries/" + name + ".sql");
    }
}
Run Code Online (Sandbox Code Playgroud)

用户:

conn.prepareStatement(Queries.getQuery("my_query"));
Run Code Online (Sandbox Code Playgroud)

当然,这只是一种方法.您可以Queries回报Statement,甚至使用动态代理来掩盖它一个简单的Java接口(其中代理处理程序可以创建语句,设置参数和运行查询)的后面.你的旅费可能会改变.

额外的好处:SQL文件的语法着色,且方式更容易维护不是字符串在Java中.