在Eclipse中,如何在Java String中获取SQL文本?
我在Java String中有一个很长的SQL语句。 在eclipse中,如何在没有Java String语法的情况下轻松获取SQL语句的文本? 我一直在手动删除它,但是在IntelliJ Idea中,有一个人可以获取文本而无需进行任何手动格式化工作来删除Java String语法(例如"
和+
字符”).Eclipse是否具有类似的function?
作为一个额外的好处,我会问,是否也可以使用在IDE中格式化的换行符来获取字符串,即使字符串本身没有\n
字符。
根据您的SQL客户端,它可能具有此function。 我知道TOAD内置了这个function。 我还记得Squirrel有它。
因此,当粘贴到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
它仍然没有精美的格式(即使使用
标签它应该保留空格),但你的SQL IDE应该帮助你,不是吗?
(我们正在使用开普勒)
-
这个
StringUtils
插件看起来非常好: http : //marketplace.eclipse.org/content/stringutils-plugin (点击截图)。- 在Eclipse市场对话框中找不到安装
- 从他们的GIT仓库下载了主ZIP,但没有继续支持解决方案5。
-
与
Java Multi-Line String Editor
插件一起,编写/读取/调试此类SQL语句非常容易: https : //marketplace.eclipse.org/content/java-multi-line-string-editor- 在Eclipse市场对话框中找不到安装
-
另一个不错的解决方案似乎是
Multiline
注释 ,其中可以在javadoc中维护字符串(在编译时将在正确格式化的字符串中进行转换): https : //github.com/benelog/multiline -
将大型字符串/ SQL外部化为单独的
*.sql
文件 (并从类路径中读取它们)将是第二个最佳选择,如果它是合适的: -
对我们来说最好的解决方案是使用Groovy (“Java脚本扩展”)和我们的Java代码:
- 你需要安装Groovy插件 https://github.com/groovy/groovy-eclipse/wiki
- 只是说
New -> Groovy Class
自动将Groovy Nature添加到我们的项目中,之后,您可以将SQL实现为类似于此的常量或枚举:- 支持Java(编辑器)支持的几乎所有东西(甚至在Java-Groovy障碍之间):
- 代码突出显示
- 重构(重命名),但仅限于Groovy文件中
- 自动完成/
CTRL+rightclick
导航 - Javadoc暗示
- 支持Java(编辑器)支持的几乎所有东西(甚至在Java-Groovy障碍之间):
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() ) ;
还有更多的糖在Eclipse中使用DTP进行调试:-)
=>所以调试这些SQL将非常简单 :
-
SQLs.groovy
file => Open with … => Other => SQL Editor (来自非常好的Eclipse Data Tools Platform (DTP) plugin
: https : //eclipse.org/datatools/ )- 您可以随时在编辑器之间切换(Eclipse会记住上次使用的每个文件)
-
从自定义预配置的数据库连接中选择此文件的正确连接(必须打开/连接,如果尚未完成)
-
标记要调试的SQL +
ALT+X
-
将查询结果调试为选项卡式或纯文本结果…