0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MyBatisGeneratorでテーブルをもとにEntity等を自動生成しよう

Posted at

MyBatisでは、MyBatisGeneratorを使用することで、テーブルからEntityMapper XMLMapperインターフェースなどを自動生成することができます。

以下は、Spring BootのGradleプロジェクトでMyBatis Generatorを設定し、自動生成する方法の手順です。

1. 必要な依存関係を追加

まず、build.gradleにMyBatis Generatorのプラグインと依存関係を追加します。

build.gradle
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に正しく接続できるように、jdbcConnectionconnectionURLには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つのコンポーネントが自動生成されます。

  1. Entityクラスcom.example.entity
  2. Mapper XMLファイルsrc/main/resources/mappers
  3. 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);
}

まとめ

  1. 依存関係の追加: mybatis-generatorと必要なライブラリをbuild.gradleに追加。
  2. 設定ファイルの作成: mybatis-generator-config.xmlで接続情報と生成設定を記述。
  3. Gradleタスクの実行: ./gradlew mybatisGeneratorでコードを自動生成。
  4. Docker環境の確認: JavaプロジェクトとMySQLがDocker上で動作していることを確認し、正しい接続情報を使用。

これで、MyBatis Generatorを使ってMySQLのテーブルから自動的にEntityMapper XMLMapperインターフェースを生成できます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?