0
2

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 5 years have passed since last update.

MyBatis Generator で Java8DateTime & Lombok を使いたい!

Posted at

前書き

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はコメント行のあたりを参考に。

pom.xml
<?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>

generatorConfig.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="プロジェクトディレクトリ配下に配置した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での実行の場合と異なるようです。ご注意ください。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?