2012-05-02

MyBatis Generator - 自動生成された要素を利用してカスタマイズする

MyBatis Generator とは、データベースのスキーマを元に MyBatis が使用する各種ファイルを自動生成するためのツールです。
MyBatis を使う場合は基本的に SQL を手書きする必要がありますが、大量の XML を手で書くのはミスの原因にもなりますし健康にも良くありません。また、スキーマ変更の多いプロジェクトでは更新の手間も馬鹿になりません。
それを解決するのが MyBatis Generator です。

MyBatis Generator は非常に柔軟で多機能なツールですが、この投稿ではマージ機能と生成されたファイルの拡張方法について説明します。
マージ機能とは、Generator がファイルを生成する際、既存のファイルを上書きするのではなく内容をマージしてくれる機能のことで、これのおかげでカスタマイズ内容を維持したまま繰り返し自動生成処理を実行することができるようになっています。

2012-04-17

MyBatis 3.1.1 選択的ロギングの改善

前の投稿 で、新しいロギングの設定では従来のようにステートメント(java.sql.PreparedStatement, java.sql.Statement)と結果(java.sql.ResultSet)のログレベルを別々に指定することができない、と書きましたが、昨日リリースされた 3.1.1 で改善されました。

DEBUG レベルではステートメントのみが出力され、新たに追加された TRACE レベルを指定することで結果を出力することができるようになっています。

2012-03-08

MyBatis 3.1.0 ログ出力設定の変更:選択的ロギング

MyBatis 3.1.0 ではログレベルをより細かい単位(パッケージ、Mapper、ネームスペース、ステートメント)で設定できるようになり、これに伴ってログ出力の設定方法が変更されています。

バージョン 3.0.x 以前で実行されるクエリの内容や結果を出力する場合、 log4j では下記のように設定していました。


log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

3.1.0 で同様の設定を行う場合は、Mapper を含むパッケージに対してログレベルを設定します(上記の設定は不要となります)。例えば Mapper が org.mybatis.example というパッケージ以下に格納されている場合は下記のようになります。


log4j.logger.org.mybatis.example=DEBUG

さらに細かく、例えばあるステートメントのログだけ出力したい場合は下記のように設定します。


log4j.logger.org.mybatis.example.BlogMapper.selectBlog=DEBUG

必要なクエリだけ出力できるので、本番環境でのログ出力など、より柔軟に対応できるようになります。

ただ、従来のようにステートメント(java.sql.PreparedStatement, java.sql.Statement)と結果(java.sql.ResultSet)のログレベルを別々に指定するといった設定は今のところできません。 バージョン 3.1.1 で改善されました。

MyBatis オンラインマニュアル:ロギング