在Eclipse中,当它';在Java字符串中是什么?

在Eclipse中,当它';在Java字符串中是什么?,java,sql,eclipse,string,Java,Sql,Eclipse,String,我在Java字符串中有一个很长的SQL语句。在eclipse中,如何在没有Java字符串语法的情况下轻松获取SQL语句的文本?我一直在手动删除它,但在IntelliJ Idea中,可以在不必进行任何手动格式化工作来删除Java字符串语法(例如“和+字符)的情况下获取文本。Eclipse有类似的功能吗 作为一个额外的好处,我想问一下,如果字符串在IDE中格式化时有换行符,即使字符串本身没有\n字符,是否也可以获得字符串。根据您的SQL客户机,它可能具有此功能。 我知道蟾蜍有这个功能,我还记得松鼠有

我在Java字符串中有一个很长的SQL语句。在eclipse中,如何在没有Java字符串语法的情况下轻松获取SQL语句的文本?我一直在手动删除它,但在IntelliJ Idea中,可以在不必进行任何手动格式化工作来删除Java字符串语法(例如
+
字符)的情况下获取文本。Eclipse有类似的功能吗


作为一个额外的好处,我想问一下,如果字符串在IDE中格式化时有换行符,即使字符串本身没有
\n
字符,是否也可以获得字符串。

根据您的SQL客户机,它可能具有此功能。 我知道蟾蜍有这个功能,我还记得松鼠有这个功能

因此,当粘贴到TOAD的SQL编辑器中时,代码会自动从Java字符串语法中提取出来。我记得它也可以与StringBuffer/StringBuilder等结构一起使用

见:

例如,您也可以为示例代码创建一个简单的regexp。 它与sql的正则表达式一起工作,如:

"select something \r\n" +
"  from dual " +
 "where 1 = 1\r\n"; 
jsfiddle应该输出

select something
  from dual
 where 1=1
尽管如此,它的格式仍然不美观(即使带有
标记,它也应该保留空格),但您的SQL IDE应该可以帮助您实现这一点,不是吗?

(我们使用的是开普勒)

package my.pkg

class SQLs {

  /** comment X */
  static final String SEL_X = ```
    select
      bla,
      foo
    from
      bar
    where
      x in (1,2,3)
  ```
}
  • 这个
    StringUtils
    插件看起来相当不错:(单击屏幕截图)

    • 在Eclipse market place对话框中找不到安装
    • 从他们的GIT repo下载了主ZIP,但没有继续支持解决方案5
  • 与Java多行字符串编辑器插件一起,编写/读取/调试这样的SQL语句将非常容易:

    • 在Eclipse market place对话框中找不到安装
  • 另一个很好的解决方案似乎是多行注释(Multilineannotation),其中可以在javadoc中维护字符串(在编译时将转换为正确格式的字符串):

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

  • 对我们来说,最好的解决方案是在Java代码旁边使用Groovy(“Java脚本扩展”):

    • 您需要安装Groovy插件
    • 只需说
      New->Groovy Class
      就可以将Groovy特性自动添加到我们的项目中,然后,您可以将SQL实现为常量或枚举,如下所示:
      • 支持Java(编辑器)支持的几乎所有内容(即使在Java Groovy障碍之间):
        • 代码突出显示
        • 重构(重命名),但只能从Groovy文件中进行重构
        • 自动完成/
          CTRL+右键单击
          -导航
        • Javadoc暗示
  • src/my/pkg/SQLs.groovy

    // ...
    stmt.executeQuery( SQLs.getSEL_X() ) ;  /* Groovy auto-created this getSEL_X() 
                                            interface method transparently/auto-
                                            suggested, but the "comment X" is not 
                                            hinted */
    
    src/my/pkg/SqlExec.java

    enum SQLs {
    
      /** comment X */
      SEL_X(```
        select
          ...
          x in (1,2,3)
      ```)
    
      String sql
    
      SQLs( String sql ) { this.sql = sql }
    }
    
    对于我们的用例来说,更合适的做法是将SQLs用作枚举:

    // the JavaDoc comment "comment X" works and the getSql() is transparently 
    // auto-generated by Groovy
    stmt.executeQuery( SQLs.SEL_X.getSql() ) ;
    
    可在
    src/my/pkg/SqlExec.java
    中访问,如下所示:

    通过在Eclipse中使用DTP对其进行调试,可以获得更多好处:-) =>因此调试这些SQL将非常容易:

  • SQLs.groovy
    file=>打开时使用…=>Other=>SQL编辑器
    (来自非常好的
    Eclipse数据工具平台(DTP)插件
    :)

    • 您可以随时根据需要在编辑器之间切换(Eclipse会记住每个文件最后使用的编辑器)
  • 从自定义预配置的db连接中为此文件选择正确的连接(如果尚未打开/连接,则必须打开/连接)

  • 正在标记要调试的SQL+
    ALT+X

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


  • 我认为在Eclipse内置版本中是不可能的,我也没有通过快速搜索在市场上找到任何插件。我没有Toad或Squirrel。我使用的是Oracle SQL Developer和Eclipse。不幸的是,这是他们在工作中提供给我的。所以Eclipse真的没有这个功能吗?我不这么认为。除此之外我没有找到太多的旧线程。你最好的机会是一个在线应用程序,你可以粘贴从Eclipse复制的字符串,然后单击“运行”以获得结果。请参阅上面的JSFIDLE链接,这可能是你的起点。