gologiusの巣

プログラミングなどの技術メモです。誰かの役に立てるとうれしいです。

レガシー環境のJavaで戦うための、SQL→Java変換器

背景

Javaで、複数行のSQLを、ソースに埋め込みたい場合があると思う。

Java15 からは テキストブロックという機能で、 複数行で文字列定数を定義するのが簡単にできるので、 あまり苦労しない(はず)

[Java]テキストブロックってかなり便利だね #java17 - Qiita

これができない、 古いJava環境で開発せざるをえない場合に使える、 JavaScriptで稼働するツールを作った。

つくったもの

Java⇔SQL変換

情報漏洩にうるさい方々のために、HTML+CSSJavaScriptのみで動作している。

使い方

select 
 id
from hogehoge
where id='123';

を張り付けると

StringBuffer sb = new StringBuffer();
sb.append("select ");
sb.append(" id ");
sb.append("from hogehoge ");
sb.append("where id='123'; ");

が出力される。

逆も用意している。 変数名はデフォルトsbにしているが、好きに変えられる。

技術詳細

今のJavaはどうか知らないが、昔のJavaは 文字列連結を

String hoge  = "a" + "b" + "c";

のように、+を使って連結すると、すごく遅いと言われていた。

解決方法としては、 StringBufferを使えと言われていたので、 それを踏襲している。