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?

More than 1 year has passed since last update.

MyBatisGeneratorを用いて、Model・Mapperの作成

Posted at

1.目的

 SpringBootのAPIを作成時に、Mybatisを用いて、DBより取得をするにあたって、ModelとMapperを作成する必要があり、ありきたりなやり方ですが、MyBatisGeneratorを用いて、自動生成するやり方を残します。

2.環境

   eclipse(Version: 2022-12 (4.26.0))
   java(ver.17)
   spring boot 3.1.1
   Gradle - Groovy
   mysql(Ver 8.0.33)

3.事前準備

(1) DBを準備する。

※今回はMysql(mysql Ver 8.0.33 for macos10.15 on x86_64 (Homebrew))を事前にインストールして、使用する。

Last login: Sun Aug  6 12:02:12 on ttys000
xxxxx> mysql --version
mysql  Ver 8.0.33 for macos10.15 on x86_64 (Homebrew)

(2) DB内にスキーマを作成して、テーブルを用意する。

※テーブルの内容は問わない。テーブルの中に定義があれば良い。
(mysqlで作成後、DB操作のツールでアクセスして、テーブルを作成済み)

スクリーンショット 2023-08-06 13.40.20.png

(3) 対象のSpring Bootのプロジェクトを作成する。

① Eclipseで、ファイル→新規→Spring スタータープロジェクトで選択し、設定は標準で作成する。(プロジェクト名は設定必要)
スクリーンショット 2023-08-06 13.50.08.png

② ①の後に、以下のようにプロジェクトが作成されれば問題なし。
スクリーンショット 2023-08-06 13.54.12.png

③ ヘルプ→Eclipseマーケットプレイスを選択する。
スクリーンショット 2023-08-06 13.55.35.png

④ MyBatisGeneratorの最新版をインストールする。(画像は既にインストール済みの場合)
スクリーンショット 2023-08-06 12.59.21.png

⑤ 「build.gradle」の内容を設定。
(以下、今回、事前検証で成功したものを掲載)

build.gradle
plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.2'
	id 'io.spring.dependency-management' version '1.1.2'
}

group = 'com'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}
repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	// 依存性を追加
	implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.9'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
	runtimeOnly 'com.mysql:mysql-connector-j'
}

tasks.named('test') {
	useJUnitPlatform()
}

4.作成時

① 「mybatis-generator-config.xml」を追加する。
(※そのまま流用して、内容をこの後編集すれば良い。)

mybatis-generator-config.xml
<!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="demoTables" targetRuntime="MyBatis3">
    <!-- DB接続設定 -->
     <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
      connectionURL="jdbc:mysql://localhost/【スキーマ名】"
      userId="【スキーマのユーザID】"
      password="【スキーマのパスワード】"
      <property name="nullCatalogMeansCurrent" value="true" />
    </jdbcConnection>

 
    <!-- Select結果がマッピングされるJavaモデルの出力設定 -->
    <javaModelGenerator targetPackage="【作成する任意パス】1" targetProject="mybatisTest/src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
      

    <!-- SQLを定義したXMLファイルの出力設定 -->
    <sqlMapGenerator targetPackage="【作成する任意パス】2" targetProject="mybatisTest/src/main/resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    
    <!-- Mapperインターフェースの出力設定 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="【作成する任意パス】3" targetProject="mybatisTest/src/main/java"> 
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    
    <!-- 自動生成するテーブルの設定 -->
    <!-- ここを設定することでCRUDのつくりを操作できる -->
    <table tableName="%"
      enableInsert="true"
      enableSelectByPrimaryKey="true"
      enableUpdateByPrimaryKey="true"
      enableDeleteByPrimaryKey="true"
      enableSelectByExample="true"
      enableUpdateByExample="true"
      enableDeleteByExample="true"
      enableCountByExample="true"
      selectByPrimaryKeyQueryId="true"
      selectByExampleQueryId="true"
      modelType="flat">
    </table>
  </context>
</generatorConfiguration>

② 内容を修正
 ・DB情報
 ・【作成する任意パス】1 〜 【作成する任意パス】3
→DB接続して、取得した内容でModelとMapperを作成できるように設定。

※修正後のイメージ
スクリーンショット 2023-08-06 14.28.37.png

③「mybatis-generator-config.xml」を右クリックして、実行→ 1 Run MyBatis Generatorをクリックする。(表示されない場合は、実行の構成より、設定をする)
スクリーンショット 2023-08-06 14.30.28.png

④実行後にコンソールに、以下のように表示されたら、MyBatisGeneratorの実行が成功である。

console
MyBatis Generator Started...
  ビルドファイル: /Users/xxxxx/Documents/GitHub/.metadata/.plugins/org.mybatis.generator.eclipse.ui/.generatedAntScripts/mybatisTest-mybatis-generator-config.xml.xml
  ビルド成功
MyBatis Generator Finished

4.実行結果

※作成された階層の確認。

① Mapperの確認

→ 「mybatis-generator-config.xml」にて
 『SQLを定義したXMLファイルの出力設定』で指定した階層を確認
※例はテーブル「M_TALENT」に紐づく、Mapperファイル
スクリーンショット 2023-08-06 14.39.21.png

→ 「mybatis-generator-config.xml」にて
 『Mapperインターフェースの出力設定』で指定した階層を確認
※例はテーブル「M_TALENT」に紐づく、Mapperのインタフェース
スクリーンショット 2023-08-06 14.43.28.png

② Modelの確認

→ 「mybatis-generator-config.xml」にて
 『Select結果がマッピングされる、Javaモデルの出力設定』で指定した階層を確認
※例はテーブル「M_TALENT」に紐づく、Modelファイル
スクリーンショット 2023-08-06 14.44.27.png

5.まとめ

ここで実装をしたものを継承することでmybatisを用いた開発を楽にすることができます。
使用方法はここでは割愛しますが、作成したものを階層を変更したり、少しいじることで、
無事mybatisで取得した結果をModelへ格納までできました。
その際にMapStructを用いるのでまた次回はmapStructの記事を書きます。

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?