在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应该帮助你,不是吗?

(我们正在使用开普勒)

  1. 这个StringUtils插件看起来非常好: http : //marketplace.eclipse.org/content/stringutils-plugin (点击截图)。

    • 在Eclipse市场对话框中找不到安装
    • 从他们的GIT仓库下载了主ZIP,但没有继续支持解决方案5。
  2. Java Multi-Line String Editor插件一起,编写/读取/调试此类SQL语句非常容易: https : //marketplace.eclipse.org/content/java-multi-line-string-editor

    • 在Eclipse市场对话框中找不到安装
  3. 另一个不错的解决方案似乎是Multiline注释 ,其中可以在javadoc中维护字符串(在编译时将在正确格式化的字符串中进行转换): https : //github.com/benelog/multiline

  4. 将大型字符串/ SQL外部化为单独的*.sql文件 (并从类路径中读取它们)将是第二个最佳选择,如果它是合适的:

  5. 对我们来说最好的解决方案是使用Groovy (“Java脚本扩展”)和我们的Java代码:

    • 你需要安装Groovy插件 https://github.com/groovy/groovy-eclipse/wiki
    • 只是说New -> Groovy Class自动将Groovy Nature添加到我们的项目中,之后,您可以将SQL实现为类似于此的常量或枚举:
      • 支持Java(编辑器)支持的几乎所有东西(甚至在Java-Groovy障碍之间):
        • 代码突出显示
        • 重构(重命名),但仅限于Groovy文件中
        • 自动完成/ CTRL+rightclick导航
        • Javadoc暗示

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将非常简单

  1. SQLs.groovy file => Open with … => Other => SQL Editor (来自非常好的Eclipse Data Tools Platform (DTP) plugin : https : //eclipse.org/datatools/ )

    • 您可以随时在编辑器之间切换(Eclipse会记住上次使用的每个文件)
  2. 从自定义预配置的数据库连接中选择此文件的正确连接(必须打开/连接,如果尚未完成)

  3. 标记要调试的SQL + ALT+X

  4. 将查询结果调试为选项卡式或纯文本结果…