3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【第四回】MyBatis Generatorの実行方法と流れ

Last updated at Posted at 2020-09-25

#はじめに
DreamHanksの松下です。今回はMyBatis Generatorを実行した際の動きについて解説していきます。

連載記事まとめ

#MyBatis Generatorとは

MyBatis はカスタム SQL、ストアドプロシージャ、高度なマッピング処理に
対応した優れた永続化フレームワークです。

ざっくり説明すると
JavaプログラムとDB間のデータを相互に変換授受してくれる通訳のようなものです。
(Object-Relational Mapper(O/RM)の一種)Java ObjectとMapperの自動生成機能そのものです。

#mybatis-generator.xmlについて

このxmlファイルがMyBatis Generatorの実行ファイルとなります。
実行することによって、下記の3つのクラスを作成してくれます。
・Dao
・Dto
・Mapper

mybatis-generator.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>
<classPathEntry location="C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\mysql-connector-java-8.0.11.jar"></classPathEntry>
<context id="context1">
<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/work_db?characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;useSSL=false"
driverClass="com.mysql.cj.jdbc.Driver"
password="Daiki8863" userId="root" />
<javaModelGenerator targetPackage="com.dreamhanks.dto" targetProject="WorkManager/src/main/java" />
<sqlMapGenerator targetPackage="mappers" targetProject="WorkManager/src/main/resources" />
<javaClientGenerator targetPackage="com.dreamhanks.dao" targetProject="WorkManager/src/main/java" type="XMLMAPPER" />
<table schema="work_db" tableName="member"/>
<table schema="work_db" tableName="worktime"/>
</context>
</generatorConfiguration>

##一つづつソースの意味を解説していきます。

<classPathEntry location="C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\mysql-connector-java-8.0.11.jar"></classPathEntry>

上記の記載はDBとの接続を図るためのものです。
DB接続を行うために「mysql-connector-java-8.0.11」というライブラリを使います。

<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/work_db?characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;useSSL=false"
driverClass="com.mysql.cj.jdbc.Driver"
password="Daiki8863" userId="root" />

上記の記載は接続するDBの設定です。
上から順に
・DBの場所の特定
・DB接続する際のpasswordの設定
・DB接続する際のuserIdの設定

<javaModelGenerator targetPackage="com.dreamhanks.dto" targetProject="WorkManager/src/main/java" />
<sqlMapGenerator targetPackage="mappers" targetProject="WorkManager/src/main/resources" />
<javaClientGenerator targetPackage="com.dreamhanks.dao" targetProject="WorkManager/src/main/java" type="XMLMAPPER" />

上記の記載は作成するものをどこに作るのかを設定しています。
上から順に
・DTOをどこに作るか?
・Mapperをどこに作るか?
・DAOをどこに作るか?

<table schema="work_db" tableName="member"/>
<table schema="work_db" tableName="worktime"/>

上記の記載は作る対象を設定しています。
順に
・スキーマの設定
・対象のテーブル名の設定

##MyBatis Generator実行方法
①「プロジェクト右クリック」 ⇒ 「実行」 ⇒ 「実行の構成」
  ⇒ 「MyBatis Generator右クリック」 ⇒ 「新規作成」

②名前を開発対象のプロジェクト名にする
③構成ファイルを開発対象のプロジェクトの[mybatis-generator.xml]があるパスまで通す

例:
「${workspace_loc:/WorkManager/src/main/resources/mybatis-generator.xml}」

③実行
下記のようにmybatis-generator.xmlで指定したディレクトリに以下のファイルが出来ます。

image.png

◆Daoクラスについて
データベースの接続、切断、SQLの発行など、データベースへのアクセスを専門に扱うクラスです。
Serviceクラスから呼ばれるインターフェースメソッドがまとめられています。

◆Mapperクラスについて
上記のDaoのメソッドと紐づくSQL文をxml形式でマッピングしているクラスです。

◆Dtoについて
上記の流れでDBからデータを取得した際に、取得したデータを保持するための箱のようなものです。
・getter,setterメソッドを使ってControllerとの値のやり取りができます。
・View(JSP)からもpathingして値のやり取りができます。

##MyBatis Generator実行時の流れ

image.png

①実行を行い、mysql-connector-java-8.0.11というDBコネクトをするためのライブラリによってDB接続ができます。

②対象のスキーマのTBLの構成をスキャンします

③スキャンしたTBLの構成に従って、Dao, Mapper, Dtoクラスを自動生成します。

#おわりに
上記以降の連載記事や解説記事はこちら(DreamHanksのブログ)で閲覧することができます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?