MyBatis Generator(MBG)を利用することで、データベーステーブルに対応するJavaエンティティ、Mapperインターフェース、XMLマッピングファイルを自動生成し、開発効率を大幅に向上させることができます。ここでは、XML構成ファイルの詳細設定と、プロパティファイルの定義例を解説します。
Generator設定ファイルの構成
自動生成の振る舞いはgeneratorConfiguration.xmlで定義します。以下は、MyBatis3Simpleモードを使用し、フラットなモデル構造でコードを生成する設定例です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 外部プロパティファイルの読み込み -->
<properties resource="database.properties" />
<!-- JDBCドライバのパス指定 -->
<classPathEntry location="${driver.location}" />
<!-- 生成コンテキストの定義 -->
<context id="MyBatisAutoGen" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- Javaファイルのエンコーディング -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- コメント生成の設定 -->
<commentGenerator>
<!-- 自動生成コメントを抑制するか -->
<property name="suppressAllComments" value="false" />
<!-- タイムスタンプの付与を抑制するか -->
<property name="suppressDate" value="true" />
<!-- DBのコメント情報を反映するか -->
<property name="addRemarkComments" value="true" />
</commentGenerator>
<!-- データベース接続情報 -->
<jdbcConnection driverClass="${db.driver}"
connectionURL="${db.url}"
userId="${db.user}"
password="${db.password}" />
<!-- Javaモデルの生成設定 -->
<javaModelGenerator targetPackage="com.example.mybatis.entity"
targetProject="${source.folder}">
<!-- 継承元となるルートクラスの設定 -->
<property name="rootClass" value="com.example.mybatis.entity.BaseEntity" />
</javaModelGenerator>
<!-- SQLマップXMLファイルの生成設定 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="${resource.folder}">
</sqlMapGenerator>
<!-- Mapperインターフェースの生成設定 -->
<!-- type="XMLMAPPER": インターフェースとXMLを生成 -->
<javaClientGenerator targetPackage="com.example.mybatis.mapper"
targetProject="${source.folder}"
type="XMLMAPPER" />
<!-- 対象テーブルの設定 -->
<table schema="${db.user}" tableName="%">
<!-- 主キーの自動生成戦略 -->
<generatedKey column="id" sqlStatement="MySql"/>
</table>
</context>
</generatorConfiguration>
プロパティファイルの定義
データベース接続情報や出力パスなどは外部プロパティファイル(database.properties)に記述し、設定ファイルから参照します。
# JDBC設定
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis_db?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
db.user=root
db.password=your_password
# パス設定
source.folder=src/main/java
resource.folder=src/main/resources
# ドライバのローカルパス
driver.location=/path/to/mysql-connector-java-8.0.xx.jar
設計上の注意点
MyBatis GeneratorによってExampleクラスを用いたQuery By Criteria (QBC) 機能も生成されますが、利用には注意が必要です。Exampleクラスを使用すると、クエリロジックがJavaコードと密結合になり、SQLのチューニングやパフォーマンス最適化を行いにくくなる傾向があります。
複雑な検索処理が必要な場合は、極力独自のSQLを記述し、SQL文とエンティティの責務を分離する設計を推奨します。これにより、コードを変更せずにSQLの最適化が可能になります。