13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IntelliJでJavaコード内のSQL文字列の表示をいい感じにする

Last updated at Posted at 2016-08-16

俗に言うLanguage Injectionを使う。
例えば、以下のようなMySQLのクエリを文字列として定義したとする。

String sql = "INSERT INTO entry (id, title) VALUES (1, 'title1') ON DUPLICATE KEY UPDATE title=VALUES(title)";

文字列にカーソルを合わせてShow Intention Action(Alt+Enter)を実行して、以下の順に選択する。

  1. Inject language or reference
  2. MySQL

この時点で文字列がSyntax Highlightされるが、これだけだと下記のような警告が発生する。

No data sources configure to run this SQL and provide advance code assistance.

ローカルにMySQLは立っている前提として、データソースを設定すれば良い。
View > Tool Windows > Database を開き、+(追加)を押して、以下の順に選択する。

  1. Data Source
  2. MySQL

すると、MySQLのData Source追加画面が開かれるので、MySQLのユーザ名やパスワード、URLを入力して、Driverをダウンロードしたりすると設定が完了する。試しにTest Connectionをクリックすると、ちゃんとMySQLに接続できてるか確認できる。

Data Sourceの設定はできたけど、エディタ上ではまだ警告が出ている。

Unable to resolve table 'entry' 

SQL文字列内のテーブルやカラムが見つからないとのことなんだけど、MySQL側にテーブルが定義されててもこの警告は出続ける。この原因は、Data Sourceの設定が足りてないから。どのデータベース(MySQL内部のCreate Databaseで作られるデータベースのこと)を見れば良いか指定してやる必要がある。

先ほど作成したData SourceのPropertiesを開いて、以下の順に実施する。

  1. Schemasタブを選択
  2. 該当のデータベースをチェックする
  3. OKボタンを押す

エディタ上のSQL文字列を見ると、警告は表示されなくなった。めでたしめでたし。

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?