MyBatisでは、MyBatisGeneratorを使用することで、テーブルからEntity
、Mapper XML
、Mapperインターフェース
などを自動生成することができます。
以下は、Spring BootのGradleプロジェクトでMyBatis Generatorを設定し、自動生成する方法の手順です。
1. 必要な依存関係を追加
まず、build.gradle
にMyBatis Generatorのプラグインと依存関係を追加します。
plugins {
// MyBatis Generator用のGradleプラグイン
id 'org.mybatis.generator' version '1.4.0' // MyBatis Generator Plugin
}
dependencies {
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
runtimeOnly 'mysql:mysql-connector-java'
implementation 'org.mybatis.generator:mybatis-generator-core:1.4.0'
}
mybatisGenerator {
// MyBatisGenerator実行時に詳細なログをコンソールに出力する
verbose = true
// 設定ファイルの格納先を指定
configFile = file("src/main/resources/mybatis-generator-config.xml")
}
2. MyBatis Generatorの設定ファイルを作成
次に、src/main/resources
ディレクトリにMyBatis Generatorの設定ファイルmybatis-generator-config.xml
を作成します。以下は基本的な設定例です。
<?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>
<context id="MySQLTables" targetRuntime="MyBatis3">
<!-- JDBC接続情報 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/your_database"
userId="root"
password="password"/>
<!-- Javaのエンティティクラスの生成先 -->
<javaModelGenerator targetPackage="com.example.entity"
targetProject="src/main/java"/>
<!-- Mapper XMLファイルの生成先 -->
<sqlMapGenerator targetPackage="mappers"
targetProject="src/main/resources"/>
<!-- Mapperインターフェースの生成先 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.mapper"
targetProject="src/main/java"/>
<!-- テーブル設定 -->
<table tableName="users" domainObjectName="UserEntity" />
<!-- 複数のテーブルを対象にする場合は、複数の< table >を追加 -->
</context>
</generatorConfiguration>
-
jdbcConnection
: Docker上のMySQLへの接続情報を設定。connectionURL
はMySQLコンテナのアドレスとポートに対応する必要があります。 -
table
: 自動生成の対象テーブルを指定します。tableName
はデータベースのテーブル名。
domainObjectName
は生成されるファイルのクラス名を指定するもの。指定しない場合、デフォルトでテーブル名を使って各ファイルが自動生成される。
3. MySQL接続の設定(application.properties
)
MySQLの接続情報はapplication.properties
に記載されていますが、MyBatis Generatorでは独自の接続情報が必要です。Dockerコンテナ上で動作するMySQLに正しく接続できるように、jdbcConnection
のconnectionURL
にはDockerコンテナのIPやホスト名を指定します。
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4. Gradleタスクの実行
MyBatis Generatorを実行するには、以下のコマンドを実行します。
./gradlew mybatisGenerator
このコマンドを実行すると、設定に基づいて、以下の3つのコンポーネントが自動生成されます。
-
Entityクラス(
com.example.entity
) -
Mapper XMLファイル(
src/main/resources/mappers
) -
Mapperインターフェース(
com.example.mapper
)
5. 生成されたファイルの確認
エンティティクラス
UserEntity.java
というクラスが自動生成されます。このクラスは、テーブルのカラムに対応するフィールドを持つJavaオブジェクトです。
public class UserEntity {
private Integer id;
private String name;
private Integer age;
// GetterとSetter
}
Mapper XMLファイル
UserMapper.xml
というSQLマッパーXMLが生成され、基本的なCRUD操作が含まれます。
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.UserEntity">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
</resultMap>
<insert id="insert" parameterType="com.example.entity.UserEntity">
INSERT INTO users (name, age)
VALUES (#{name}, #{age});
</insert>
</mapper>
Mapperインターフェース
UserMapper.java
というインターフェースが生成されます。ここには、SQLマッパーに対応するメソッドが含まれます。
public interface UserMapper {
int insert(UserEntity record);
}
まとめ
-
依存関係の追加:
mybatis-generator
と必要なライブラリをbuild.gradle
に追加。 -
設定ファイルの作成:
mybatis-generator-config.xml
で接続情報と生成設定を記述。 -
Gradleタスクの実行:
./gradlew mybatisGenerator
でコードを自動生成。 - Docker環境の確認: JavaプロジェクトとMySQLがDocker上で動作していることを確認し、正しい接続情報を使用。
これで、MyBatis Generatorを使ってMySQLのテーブルから自動的にEntity
、Mapper XML
、Mapper
インターフェースを生成できます。