前書き
SpringBootを使用する上でMyBatisをセットで使うことが多いのですが、
MyBatisGeneratorをあわせて使うことも多いです。
ただ、MyBatisGeneratorのGetter/Setter用クラスにLombokを適用させているサンプルがあまりなかったためまとめました。
環境
- Mac 10.15.1 (Catalina)
- Java 8
- MyBatis Generator 1.3.7
- Maven 3系
- MySQL 8.0
MySQLは一つ前に上げた記事 MacでDocker上に日本語環境のMySQL8.0を建てる で作成したものを使用しました。
OSはWindowsでもLinuxでも問題ありません。
事前準備
適当なDBインスタンスにテーブルを作成する。
ここでは前述の環境の通りMySQL上にテーブルを作成したものとする。
参考URL
以降の手順は、ほぼほぼ上記のプラグインのGitHubの手順のままです。
設定ファイル
pom.xml 及びMyBatisGenerator用Xmlファイルの設定例です。
SpringBootのWebを入れていますが、特に意味はありません。
pomはコメント行のあたりを参考に。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!-- Mybatis Generator用 -->
<mybatis.generator.configurationFile>${basedir}/src/main/resources/generatorConfig.xml</mybatis.generator.configurationFile>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Mybatis Generator用 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>com.softwareloop</groupId>
<artifactId>mybatis-generator-lombok-plugin</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
<?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="プロジェクトディレクトリ配下に配置したDB接続用のjarファイルのパスを記載する(ex: lib/mysql-connector-java-8.0.18.jar)" />
<context id="MySQLTables" targetRuntime="MyBatis3">
<plugin type="com.softwareloop.mybatis.generator.plugins.LombokPlugin">
</plugin>
<commentGenerator>
<property name="suppressDate" value="true" />
</commentGenerator>
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:13306/testDb"
userId="test"
password="password" />
<javaTypeResolver>
<property name="useJSR310Types" value="true" />
</javaTypeResolver>
<javaModelGenerator
targetPackage="Model(java)の配置先パッケージを記載する"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaModelGenerator>
<javaClientGenerator
targetPackage="Mapper(java)の配置先パッケージを記載する"
targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<sqlMapGenerator
targetPackage="Mapper(xml)の配置先パッケージを記載する"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<table tableName="%"
enableInsert="true"
enableSelectByPrimaryKey="true"
enableSelectByExample="true"
enableUpdateByPrimaryKey="true"
enableUpdateByExample="true"
enableDeleteByPrimaryKey="true"
enableDeleteByExample="true"
enableCountByExample="true"
selectByExampleQueryId="true"
modelType="flat">
</table>
</context>
</generatorConfiguration>
注意
generatorConfig.xml はMavenで確認しました。
EclipseプラグインのMyBatis Generatorだと、generatorConfig.xml内のtargetProjectのパスがMavenでの実行の場合と異なるようです。ご注意ください。