12948


ペーストする時に、自動的にエスケープ等をしてくれる設定があるのは知っています。

[Eclipseのjavaで複数行のSQL文を簡単に入力 編集する方法 |
FNB](https://fushihara.org/blog/archives/1657)  
自分のブログで申し訳ないのですが、こういう事です。  
[![画像の説明をここに入力](https://i.stack.imgur.com/ljumh.png)](https://i.stack.imgur.com/ljumh.png)  
この開いているサブウィンドウに複数行のテキストをコピペすると、適切に改行や”のエスケープを行ってjavaコードに反映してくれて  
javaコード上でこのウインドウを開くと、入力済みの変数に再度編集をする事が出来て、  
複数行のテキストを入力する際にエスケープや改行の心配をする必要が完全になくなっていました。

[Java Multi-Line String Editor | Eclipse Plugins, Bundles and Products -
Eclipse Marketplace](http://marketplace.eclipse.org/content/java-multi-line-
string-editor)  
このeclipseのプラグインがとても便利だったのですが、現状消えてしまっているようです。

そこで質問なのですが、同じような機能の実現方法、みなさんはどのように複数行のテキストを入力しているのか、もしくは上記のJava Multi-Line
String Editorを配布している場所を教えて頂けますでしょうか。  
eclipseの設定＞Java＞Editer＞Typing＞Escape text when pasting into a string literal
は、入力だけで再編集は出来ないかと思います。  
単純に自分が無知で「なーんだこの方法を使えば複数行の入力も簡単に出来たんだね」となるとよいのですが・・・

[Paste a multi-line Java String in Eclipse - Stack
Overflow](https://stackoverflow.com/questions/2159678/paste-a-multi-line-java-
string-in-eclipse)  
同じような質問が本家で2012年頃にあり、その時はEclipseの上記の設定とJava Multi-Line String
Editorが紹介されていました。


CC BY-SA 3.0
2015-08-01T18:47:50.590
12928
2015-08-02T23:40:54.283
2017-05-23T12:38:55.307
-1
805
question
java sql eclipse
Eclipseでjavaのソースコードに複数行の文字変数を簡単に入力、編集する方法


## TL;DR

求められている回答とは違うかもしれませんが、SQLをリソースファイルとして別に切り出す方が良いのではないでしょうか。SQLをソースに直接文字列で埋め込む方法はメンテナンス性から言って正直お勧めしません。

ファイルを切り出す利点としてはたとえば次のようなものが挙げられます。

  * Java文字列のエスケープ処理に煩わされなくて済む
  * [Eclipse DTP](https://www.eclipse.org/datatools/project_sqldevtools/) 等のSQL用エディタが使えるのでシンタックスハイライトや入力補完機能の利用が期待できる
  * git等のバージョン管理において差分が見やすくなる
  * ファイルを分けることでSQLとJavaソースを独立して管理できる（複数人での開発時など）

## 実装例：

一例としてプロジェクト構成が

[code]

    /src/main/java/foo/Foo.java
    /src/main/resources/foo/bar.sql
    
[/code]

であるとき、たとえば次のような形でSQLを文字列として読み込むことができます。(import文等は省略 / mavenあるいはgradleの利用を想定)

### Foo.java

[code]

    /**
     * org.apache.commons.io.IOUtils を利用
     */
    public class Foo {
        public String bar() {
            String sql = null;
            try {
                sql = IOUtils.toString(
                        this.getClass().getResourceAsStream("bar.sql"), "UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return sql;
        }
    }
    
[/code]

### bar.sql

[code]

    SELECT
      *
    FROM
      baz;
    
[/code]

## 余談：

[Groovy](http://www.groovy-
lang.org/)ならいわゆる[ヒアドキュメント](http://d.hatena.ne.jp/Kazuhira/20130715/1373878511)が書けます。


CC BY-SA 3.0
2015-08-02T09:35:39.047
12948
2015-08-02T23:40:54.283
2015-08-02T23:40:54.283
10492
10492
12928
answer