我在 Java 字符串中有一个很长的 SQL 语句。在eclipse中,如何在没有Java String语法的情况下轻松获取SQL语句的文本?我一直在手动删除它,但在 IntelliJ Idea 中,无需执行任何手动格式化工作来删除 Java 字符串语法(例如"
和+
字符)即可获取文本。Eclipse 有类似的功能吗?
作为一个额外的好处,我会问是否也可以在 IDE 中格式化后,即使\n
字符串本身不存在任何字符,也可以获取带有换行符的字符串。
根据您的 SQL 客户端,它可能具有此功能。我知道 TOAD 内置了这个功能。我还记得松鼠有它。
因此,当粘贴到 TOAD 的 SQL 编辑器中时,代码会自动从 Java 字符串语法中提取出来。我记得它也适用于像 StringBuffer/StringBuilder 这样的结构。
请参阅:http ://dev.toadformysql.com/webhelp/Content/Editor/Convert_SQL_Embedded_SQL.htm
或者您可以为您的示例代码创建一个简单的正则表达式,例如这个 jsfiddle。它适用于 sql 的正则表达式,例如:
"select something \r\n" +
" from dual " +
"where 1 = 1\r\n";
jsfiddle 应该输出
select something
from dual
where 1=1
它的格式仍然不是很漂亮(即使使用<pre>
标签它应该保留空格),但是您的 SQL IDE 应该可以帮助您,不是吗?
(我们正在使用开普勒)
这个StringUtils
插件看起来不错:http ://marketplace.eclipse.org/content/stringutils-plugin (点击截图)。
与Java Multi-Line String Editor
插件一起,编写/读取/调试此类 SQL 语句将非常容易:https ://marketplace.eclipse.org/content/java-multi-line-string-editor
另一个不错的解决方案似乎是Multiline
注释,可以在其中维护 javadoc 中的字符串(在编译时将转换为格式正确的字符串):https ://github.com/benelog/multiline
*.sql
如果合适的话,在单独的文件中外部化大型字符串/SQL(并从类路径中读取它们)将是第二个最佳选择:
对我们来说最好的解决方案是在我们的 Java 代码旁边使用Groovy(“Java 脚本扩展”):
New -> Groovy Class
将Groovy Nature自动添加到我们的项目中,然后,您可以将 SQL 实现为类似于以下的常量或枚举:
CTRL+rightclick
导航src/my/pkg/SQLs.groovy
:
package my.pkg
class SQLs {
/** comment X */
static final String SEL_X = ```
select
bla,
foo
from
bar
where
x in (1,2,3)
```
}
src/my/pkg/SqlExec.java
:
// ...
stmt.executeQuery( SQLs.getSEL_X() ) ; /* Groovy auto-created this getSEL_X()
interface method transparently/auto-
suggested, but the "comment X" is not
hinted */
更适合我们的用例是将 SQL 用作枚举:
enum SQLs {
/** comment X */
SEL_X(```
select
...
x in (1,2,3)
```)
String sql
SQLs( String sql ) { this.sql = sql }
}
可以这样访问src/my/pkg/SqlExec.java
:
// the JavaDoc comment "comment X" works and the getSql() is transparently
// auto-generated by Groovy
stmt.executeQuery( SQLs.SEL_X.getSql() ) ;
=> 所以调试这些 SQL 将非常简单:
SQLs.groovy
文件 => 打开 ... => 其他 => SQL 编辑器(来自非常好的Eclipse Data Tools Platform (DTP) plugin
:https ://eclipse.org/datatools/ )
从自定义的预配置数据库连接中为该文件选择正确的连接(如果尚未完成,则必须打开/连接)
标记待调试的SQL +ALT+X
将查询结果调试为选项卡式或纯文本结果...