Java

【解説】MyBatis Generatorを使いコードを自動生成する方法

2020年12月12日

はじめに

Java言語で Database(DB)を利用する開発では、O/Rマッパーを利用することが多々あります。
規模にもよりますが、O/Rマッパーを利用する場合に準備・実装しなければならないのは、

  • DAO(Data Access Object)クラス
  • DTO(Data Transfer Object)クラス
  • O/Rマッパーに渡す Mapping 定義ファイル

です。

SANACHAN
SANACHAN
正直・・・かなり準備・実装が面倒くさい!

 

ということで、今回はこれら必要なクラスを自動生成してくれる MyBatis Generator を紹介します。
本記事を記載する際に使用した環境は、以下のとおり。

eclipse 2020-12 M1 (v4.18.0 M1)
Spring Boot v2.4.1
Database H2 (local storage)
MyBatis Generator v1.4.0

 

eclipse のインストール方法が分からない方は、以下も合わせてお読みください。

こちらもCHECK

ダウンロード
【手順】Javaの統合開発環境eclipseをダウンロード&インストール

ソフトウェアの開発を行うには、コードを実行する環境が必要です。Windowsで開発する場合、無料の開発環境「eclipse(エクリプス)」が超有名。今回は、Javaの統合開発環境「eclipse」のダウンロードから起動完了までを解説します。

続きを見る

 

 

語句説明

O/Rマッパー

オブジェクト関係マッピング(英: Object-relational mapping、O/RM、ORM)とは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法。(Wikipediaより)

SANACHAN
SANACHAN
JavaのクラスとDBテーブルの関係を定義するだけでDBにアクセスできる仕組みのこと。

 

MyBatis

MyBatis はJavaならびに.NET Frameworkで利用可能な、XMLまたはアノテーションを用いてストアドプロシージャやSQL文をオブジェクトと紐付ける永続性フレームワークである。(Wikipediaより)

SANACHAN
SANACHAN
昔からあるO/Rマッパーの一種だと覚えておきましょう。

 

DAO(Data Access Object)

Data Access Object(DAO)とは、ある種のデータベースや永続性機構の抽象化されたインタフェースを提供するオブジェクトであり、データベースの詳細を開示することなく特定の操作を提供。(Wikipediaより)

SANACHAN
SANACHAN
DBのアクセス管理、アクセスするInterfaceを提供するクラスと覚えておきましょう。

 

DTO(Data Transfer Object)

Data Transfer Object(DTO)はデザインパターンの一種で、アプリケーションソフトウェアのサブシステム間でデータを転送するのに使う。(Wikipediaより)

SANACHAN
SANACHAN
DB内のレコード(データ)をオブジェクトとして表現するために使われるものです。

 

DDL(Data Definition Language)

SQLのデータ定義言語の文は関係データベースの構造を定義する。(Wikipediaより)

SANACHAN
SANACHAN
CREATE, DROPなど、テーブルを操作するためのSQL文記述技法です。

 

新規プロジェクトの作成

プロジェクト作成ウィザード

まずは eclipse で新規プロジェクトを作成します。

「ファイル」⇒「新規」⇒「その他」とたどっていきます。

新規プロジェクトの作成

新規プロジェクトの作成

 

プロジェクトの種類を選択

作成するプロジェクトの種類は「Spring スターター・プロジェクト」を選択し、
「次へ」をクリックします。

プロジェクトの選択

プロジェクトの種類を選択

スポンサーリンク

プロジェクトの構成を設定

プロジェクト名は「demo」⇒「mybatis-demo」に変更(任意の名前でOK)、
プロジェクトの構成は「Maven」⇒「Gradle」に変更します。

SANACHAN
SANACHAN
たんに、私が Gradle 派なだけです。
プロジェクトの設定

プロジェクトの設定

 

プロジェクトの依存関係を設定

プロジェクトの依存関係は、以下の6つを選択します。(Textボックスから検索できます)

  • Spring Boot DevTools
  • Lombok
  • MyBatis Framework
  • Flyway Migration
  • H2 Database
  • Spring Web
プロジェクトの依存関係

プロジェクトの依存関係

スポンサーリンク

プロジェクト作成ウィザードの完了

最後のサイト情報は、特に変更の必要はありません。そのまま「完了」をクリック。

プロジェクト情報

プロジェクトのサイト情報

 

プロジェクト作成完了

依存関係を解決するため、必要なパッケージのダウンロードが行われます。
しばらくお茶を飲みながら待ちましょう。

以下のようなプロジェクトが作成されれば完了です。

プロジェクト作成完了

プロジェクト作成完了

 

H2 Database の設定

H2 Database の設定を「src/main/resources/application.properties」に行います。

H2の設定

 

H2 Database にテーブルを作成

次に、H2 Database にテーブルを作成します。

DDLファイルの作成

先ほどのフォルダ「src/main/resources」の下に「db.migration」という項目があります。
そこを右クリックして「V1____create_schema.sql」というファイルを作成しましょう。

SANACHAN
SANACHAN
Flywayを使ってSQLを実行します。
ファイルの命名にルールがありますので、まずは同名で作成しましょう。

 

ファイル作成ウィザード

db.migration」を右クリック⇒「新規」⇒「ファイル」を選択

新規リソースの作成

 

新規ファイルの作成

作成するファイル名「V1____create_schema.sql」を入力します。

新規ファイルの作成

 

DLLの記述

作成したファイルにテーブルを作成するSQLを記述します。

DDL記述

スポンサーリンク

Javaアプリケーションを実行

この状態でいったん Java アプリケーションを実行します。

起動後、Flyway がDDL文を適用して H2 Database にテーブルを作成してくれます。

 

Java アプリケーションの実行

com.example.demo」の項目を右クリックし、「実行」⇒「Java アプリケーション」を選択します。

Javaアプリケーションの実行

 

FlywayがDDL適応した結果の確認

FlywayによるDDL実行結果
SANACHAN
SANACHAN
赤枠の「Successfully applied 1 migration to schema "PUBLIC"」が出てればOKです。

正常終了を確認したら、四角の赤ボタンを押下して Java アプリケーションを終了させましょう。

スポンサーリンク

MyBatis Generator のインストール

ようやく本命の「MyBatis Generator」をインストールします。

eclipse の「ヘルプ」⇒「マーケットプレース」から、「MyBatis」で検索してインストールします。

MyBatis_Generatorインストール
SANACHAN
SANACHAN
ライセンスの同意、再起動を促されたら再起動しましょう。

スポンサーリンク

MyBatis Generator Config の作成

MyBatis Generator が参照する設定ファイルを作成します。

generationConfig.xml ファイルの作成

generationConfig.xml」ファイルを「src/main/resources」配下に作成しましょう。

generationConfigファイルの作成

 

generationConfig.xml の記述内容

作成直後はXMLエディターで開かれます。

いったん閉じて、ファイルの右クリック⇒「次で開く」⇒「テキスト・エディター」で開きましょう。

generationConfigの記述内容

 

注意ポイント

connectionURL は、H2 Database ファイルのフルパスを入力する必要があります。
フルパスで指定しなかった場合、H2 Database を上手く参照できず、
「WARNING: Table configuration with schema null, and table XXXX did not resolve to any tables
というワーニングが出て失敗します。

スポンサーリンク

MyBatis Generator の実行

実行構成の作成

eclipse のメニュー「実行」⇒「実行構成」を選択します。

MyBatis_Generatorの実行

 

実行構成の編集

「MyBatis Generator」をダブルクリックし、以下の項目を編集します。

  • 名前:「mybatis-generator」を記述(任意の名前)
  • 構成ファイルに先ほど作成した generationConfig.xml を選択
    「ワークスペース」のボタンを押下して選択する
MyBatis_Generatorの実行構成

 

実行と実行結果

構成の編集が完了すると、画面中央に「mybatis-generator」が表示されます。(任意につけた名前)

これをダブルクリックすることで MyBatis Generator を実行することができます。

MyBatis_Generator実行結果

コンソールにWARNINGやERRORが出力されることなく「ビルド成功」と表示されると完了です。
以下のファイルが出来上がっていることが分かります。

  • Book.java
  • BookExample.java
  • BookMapper.java
  • BookMapper.xml

スポンサーリンク

自動生成されたファイルの中身(コメント除く)

DTO(Book.java)

SANACHAN
SANACHAN
レコードのデータを格納するDTOです。
setter/getterが実装されており、オブジェクトをリストで扱うことでイテレーティブ処理が容易になります。

スポンサーリンク

DAO(BookMapper.java、BookExample.java)

SANACHAN
SANACHAN
SELECT、INSERT、UPDATEやDELETEなどのCRUDを持つ interface クラスです。

 

SANACHAN
SANACHAN
BookMapper の interface に引数として渡すことで、WHERE 句として働きます。

 

Mapping 定義ファイル(BookMapper.xml)

SANACHAN
SANACHAN
MyBatis O/Rマッパーに渡す定義ファイルです。

 

参考・引用

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Java
-, ,