はじめに
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?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="simple" targetRuntime="MyBatis3"> <jdbcConnection connectionURL="jdbc:mysql://localhost:ポート番号/スキーマ名?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false" driverClass="com.mysql.cj.jdbc.Driver" password="パスワード" userId="ユーザー名" /> <javaModelGenerator targetPackage="com.dreamhanks.dto" targetProject="プロジェクト名/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mappers" targetProject="プロジェクト名/src/main/resources" /> <javaClientGenerator targetPackage="com.dreamhanks.dao" targetProject="プロジェクト名/src/main/java" type="XMLMAPPER" /> <table schema="スキーマ名" tableName="テーブル名" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="trues"> <property name="useActualColumnNames" value="false"/> <generatedKey column="id" sqlStatement="Mysql" identity="true"/> </table> </context> </generatorConfiguration> |
一つづつソースの意味を解説していきます。
1 |
<jdbcConnection connectionURL="jdbc:mysql://localhost:ポート番号/スキーマ名?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false" driverClass="com.mysql.cj.jdbc.Driver" password="パスワード" userId="ユーザー名" /> |
上記の記載は接続するDBの設定です。
上から順に
・DBの場所の特定
・DB接続する際のpasswordの設定
・DB接続する際のuserIdの設定
1 2 3 |
<javaModelGenerator targetPackage="com.dreamhanks.dto"targetProject="プロジェクト名/src/main/java"> <sqlMapGenerator targetPackage="mappers"targetProject="プロジェクト名/src/main/resources" /> <javaClientGenerator targetPackage="com.dreamhanks.dao" targetProject="プロジェクト名/src/main/java"type="XMLMAPPER" /> |
上記の記載は作成するものをどこに作るのかを設定しています。
上から順に
・DTOをどこに作るか?
・Mapperをどこに作るか?
・DAOをどこに作るか?
1 |
上記の記載は作る対象を設定しています。 |
上記の記載は作る対象を設定しています。
1 |
table schema="スキーマ名" tableName="テーブル名" |
順に
・スキーマの設定
・対象のテーブル名の設定
MyBatis Generator実行方法
①「プロジェクト右クリック」 ⇒ 「実行」 ⇒ 「実行の構成」
⇒ 「MyBatis Generator右クリック」 ⇒ 「新規作成」
②名前を開発対象のプロジェクト名にする
③構成ファイルを開発対象のプロジェクトの[mybatis-generator.xml]があるパスまで通す
例:
「${workspace_loc:/WorkManager/src/main/resources/mybatis-generator.xml}」
③実行
下記のようにmybatis-generator.xmlで指定したディレクトリに以下のファイルが出来ます。
◆Daoクラスについて
データベースの接続、切断、SQLの発行など、データベースへのアクセスを専門に扱うクラスです。
Serviceクラスから呼ばれるインターフェースメソッドがまとめられています。
◆Mapperクラスについて
上記のDaoのメソッドと紐づくSQL文をxml形式でマッピングしているクラスです。
◆Dtoについて
上記の流れでDBからデータを取得した際に、取得したデータを保持するための箱のようなものです。
・getter,setterメソッドを使ってControllerとの値のやり取りができます。
・View(JSP)からもpathingして値のやり取りができます。
MyBatis Generator実行時の流れ
①実行を行い、mysql-connector-java-8.0.11というDBコネクトをするためのライブラリによってDB接続ができます。
②対象のスキーマのTBLの構成をスキャンします
③スキャンしたTBLの構成に従って、Dao, Mapper, Dtoクラスを自動生成します。
コメント