Spring Boot DB連携

MyBatis Generatorを使ってMapperやEntityを自動生成してみた

SpringフレームワークでMyBatisを利用する際、EntityクラスやMapperクラス、Mapperクラスが参照するXMLファイルが必要になってくるが、それらはMyBatis Generatorによって自動生成することができる。

今回は、MyBatis GeneratorによってEntityクラスやMapperクラス、Mapperクラスが参照するXMLファイルを自動生成してみたので、その手順を共有する。

なお、Entityクラスの例は、以下のサイトの「UserData.java」を参照のこと。

Spring BootのWEB画面上で、MyBatisによるOracle接続を実装してみた今回は、Oracle接続する処理をMyBatisにより実装してみたので、そのサンプルプログラムを共有する。MyBatisを利用すると、S...

また、MapperクラスやMapperクラスが参照するXMLファイルの例は、以下のサイトを参照のこと。

MyBatisのSQL文をXMLファイルに配置してみたMyBatisを利用するプログラムで、これまではMapperクラスに直接SQL文を記載していたが、今回はXMLファイルにSQL文を移動し...

前提条件

下記記事の手順に従って、STSをダウンロード済であること。

STSインストール_1
STS(Spring Tool Suite)をWindows端末上にダウンロードしてみたSpring BootアプリケーションをEclipse上で開発するには、Spring用のプラグインを同梱した「STS(Spring To...

また、データベース上に以下のテーブルが作成されていること。
user_dataテーブルの構成



「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

やってみたこと

  1. MyBatis Generatorのインストール
  2. Spring Bootプロジェクトの作成
  3. MyBatis Generator用の設定ファイルの作成
  4. MyBatis Generatorの実行

MyBatis Generatorのインストール

MyBatis Generatorのインストール手順は、以下の通り。

1) STSを起動し、「ヘルプ」メニューから「Eclipse マーケットプレース」を選択する。
MyBatis Generatorのインストール_1

2) 検索ウィンドウに「MyBatis Generator」を指定し、「Go」ボタンを押下する。
MyBatis Generatorのインストール_2

3) 「MyBatis Generator」の「インストール」ボタンを押下する。
MyBatis Generatorのインストール_3

4) ライセンスのレビュー画面が表示されるので、「使用条件の条項に同意します」を選択後、「完了」ボタンを押下する。
MyBatis Generatorのインストール_4

5) セキュリティー警告ダイアログが表示されるので、「インストール」ボタンを押下する。
MyBatis Generatorのインストール_5

6) ソフトウェア更新ダイアログが表示されるので、「今すぐ再起動」ボタンを押下する。
MyBatis Generatorのインストール_6

7) パッケージ・エクスプローラー上で右クリックし、「新規」メニューから「その他」を選択すると、以下のように、「MyBatis Generator Configuration File」メニューが確認できる。
MyBatis Generatorのインストール_7_1

MyBatis Generatorのインストール_7_2
freelance hubを利用して10万件を超える案件情報からJava Spring案件を検索してみたfreelance hubは、レバテックフリーランスやフリエン(furien)を始めとした多くのフリーランスエージェントの案件をまとめて...

Spring Bootプロジェクトの作成

STS上で、MyBatis GeneratorによってEntityクラスやMapperクラス、Mapperクラスが参照するXMLファイルを自動生成の対象とするSpring Bootプロジェクトを作成する。その手順は以下の通り。

1) パッケージ・エクスプローラー上で右クリックし、「新規」メニューから「Spring スターター・プロジェクト」を選択する。
SpringBootプロジェクトの作成_1

2) 以下のように作成するプロジェクトの情報を指定し、「次へ」ボタンを押下する。
SpringBootプロジェクトの作成_2

3) MyBatis Frameworkのチェックを指定し、「次へ」ボタンを押下する。
SpringBootプロジェクトの作成_3

4) 以下の画面が表示されるので、「完了」ボタンを押下する。なお、下記画面では環境の都合上、Javaのバージョンを13に変更している。
SpringBootプロジェクトの作成_4

5) 以下のように、「demo2」プロジェクトが作成されることが確認できる。
SpringBootプロジェクトの作成_5

6) Oracleにojdbc経由で接続するため、以下のように、libフォルダ下にJDBCドライバ「ojdbc6.jar」を配置する。
SpringBootプロジェクトの作成_6

7) Oracleにojdbc経由で接続するため、pom.xmlに以下の記述を追加する。

<!-- oracleを利用するための設定 -->
<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/ojdbc6.jar</systemPath>           
</dependency>

追加後の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.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>13</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!-- oracleを利用するための設定 -->
        <dependency>
            <groupId>com.oracle.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/ojdbc6.jar</systemPath>           
        </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>
        </plugins>
    </build>

</project>

8) 今回作成したプロジェクトを選択し右クリックし、「Maven」から「プロジェクトの更新」を選択する。
SpringBootプロジェクトの作成_8_1

以下のように、Maven更新対象のプロジェクトが選択された状態で、「OK」ボタンを押下する。
SpringBootプロジェクトの作成_8_2



MyBatis Generator用の設定ファイルの作成

MyBatis Generator用の設定ファイルの作成手順は、以下の通り。

1) 作成したプロジェクトの「src/main/resources」フォルダを選択し右クリックし、「新規」メニューから「その他」を選択する。
MyBatis Generatorの設定ファイル作成_1

2) 「MyBatis Generator Configuration File」を選択し、「次へ」ボタンを押下する。
MyBatis Generatorの設定ファイル作成_2

3) 以下の画面が表示されるので、「完了」ボタンを押下する。
MyBatis Generatorの設定ファイル作成_3

4) 以下のように、「generatorConfig.xml」が作成されることが確認できる。
MyBatis Generatorの設定ファイル作成_4

5) 作成された「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>
  <context id="OracleTables" targetRuntime="MyBatis3">

    <!-- 参照元となるテーブルのあるDBへの接続設定 -->
    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
        connectionURL="jdbc:oracle:thin:@localhost:1521:xe"
        userId="USER01"
        password="USER01">
    </jdbcConnection>

    <!-- UserDataクラスを生成する設定 -->
    <javaModelGenerator targetPackage="com.example.demo" 
        targetProject="demo2/src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <!-- UserDataMapperのXMLファイルを生成する設定 -->
    <sqlMapGenerator targetPackage="com.example.demo" 
        targetProject="demo2/src/main/resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    
    <!-- UserDataMapperクラスを生成する設定 -->
    <javaClientGenerator type="XMLMAPPER" 
        targetPackage="com.example.demo" 
        targetProject="demo2/src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <!-- 参照元となるテーブルを指定 -->
    <table tableName="user_data">
      <property name="useActualColumnNames" value="true" />
    </table>

  </context>
</generatorConfiguration>



MyBatis Generatorの実行

MyBatis Generatorの実行手順は、以下の通り。

1) 「generatorConfig.xml」を選択し右クリックし、「実行」から「Run MyBatis Generator」を指定する。
MyBatis Generatorの実行_1

2) 実行すると、以下のコンソールログが出力される。
MyBatis Generatorの実行_2

3) また、実行した結果、以下の赤枠のファイルが作成される。
MyBatis Generatorの実行_3

作成された「UserData.java」の内容は、以下の通り。

package com.example.demo;

public class UserData {

    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.ID
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private Integer ID;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.NAME
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private String NAME;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.BIRTH_YEAR
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private Short BIRTH_YEAR;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.BIRTH_MONTH
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private Short BIRTH_MONTH;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.BIRTH_DAY
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private Short BIRTH_DAY;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.SEX
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private String SEX;
    /**
     * This field was generated by MyBatis Generator. This field corresponds to the database column USER_DATA.MEMO
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    private String MEMO;

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.ID
     * @return  the value of USER_DATA.ID
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public Integer getID() {
        return ID;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.ID
     * @param ID  the value for USER_DATA.ID
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setID(Integer ID) {
        this.ID = ID;
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.NAME
     * @return  the value of USER_DATA.NAME
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public String getNAME() {
        return NAME;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.NAME
     * @param NAME  the value for USER_DATA.NAME
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setNAME(String NAME) {
        this.NAME = NAME == null ? null : NAME.trim();
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.BIRTH_YEAR
     * @return  the value of USER_DATA.BIRTH_YEAR
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public Short getBIRTH_YEAR() {
         return BIRTH_YEAR;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.BIRTH_YEAR
     * @param BIRTH_YEAR  the value for USER_DATA.BIRTH_YEAR
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setBIRTH_YEAR(Short BIRTH_YEAR) {
        this.BIRTH_YEAR = BIRTH_YEAR;
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.BIRTH_MONTH
     * @return  the value of USER_DATA.BIRTH_MONTH
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public Short getBIRTH_MONTH() {
         return BIRTH_MONTH;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.BIRTH_MONTH
     * @param BIRTH_MONTH  the value for USER_DATA.BIRTH_MONTH
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setBIRTH_MONTH(Short BIRTH_MONTH) {
        this.BIRTH_MONTH = BIRTH_MONTH;
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.BIRTH_DAY
     * @return  the value of USER_DATA.BIRTH_DAY
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public Short getBIRTH_DAY() {
         return BIRTH_DAY;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.BIRTH_DAY
     * @param BIRTH_DAY  the value for USER_DATA.BIRTH_DAY
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setBIRTH_DAY(Short BIRTH_DAY) {
         this.BIRTH_DAY = BIRTH_DAY;
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.SEX
     * @return  the value of USER_DATA.SEX
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public String getSEX() {
        return SEX;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.SEX
     * @param SEX  the value for USER_DATA.SEX
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setSEX(String SEX) {
        this.SEX = SEX == null ? null : SEX.trim();
    }

    /**
     * This method was generated by MyBatis Generator. This method returns the value of the database column USER_DATA.MEMO
     * @return  the value of USER_DATA.MEMO
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public String getMEMO() {
        return MEMO;
    }

    /**
     * This method was generated by MyBatis Generator. This method sets the value of the database column USER_DATA.MEMO
     * @param MEMO  the value for USER_DATA.MEMO
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    public void setMEMO(String MEMO) {
        this.MEMO = MEMO == null ? null : MEMO.trim();
    }
}



また、作成された「UserDataMapper.java」の内容は、以下の通り。

package com.example.demo;

import com.example.demo.UserData;
import com.example.demo.UserDataExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface UserDataMapper {

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    long countByExample(UserDataExample example);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int deleteByExample(UserDataExample example);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int deleteByPrimaryKey(Integer ID);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int insert(UserData record);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int insertSelective(UserData record);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    List<UserData> selectByExample(UserDataExample example);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    UserData selectByPrimaryKey(Integer ID);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int updateByExampleSelective(@Param("record") UserData record, @Param("example") UserDataExample example);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int updateByExample(@Param("record") UserData record, @Param("example") UserDataExample example);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int updateByPrimaryKeySelective(UserData record);

    /**
     * This method was generated by MyBatis Generator. This method corresponds to the database table USER_DATA
     * @mbg.generated  Fri Oct 02 18:49:46 JST 2020
     */
    int updateByPrimaryKey(UserData record);
}



さらに、作成された「UserDataMapper.xml」の内容は、以下の通り。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.UserDataMapper">
  <resultMap id="BaseResultMap" type="com.example.demo.UserData">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    <id column="ID" jdbcType="DECIMAL" property="ID" />
    <result column="NAME" jdbcType="VARCHAR" property="NAME" />
    <result column="BIRTH_YEAR" jdbcType="DECIMAL" property="BIRTH_YEAR" />
    <result column="BIRTH_MONTH" jdbcType="DECIMAL" property="BIRTH_MONTH" />
    <result column="BIRTH_DAY" jdbcType="DECIMAL" property="BIRTH_DAY" />
    <result column="SEX" jdbcType="CHAR" property="SEX" />
    <result column="MEMO" jdbcType="VARCHAR" property="MEMO" />
  </resultMap>
  <sql id="Example_Where_Clause">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    <where>
      <foreach collection="oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Update_By_Example_Where_Clause">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    <where>
      <foreach collection="example.oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    ID, NAME, BIRTH_YEAR, BIRTH_MONTH, BIRTH_DAY, SEX, MEMO
  </sql>
  <select id="selectByExample" parameterType="com.example.demo.UserDataExample" resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />
    from USER_DATA
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    select 
    <include refid="Base_Column_List" />
    from USER_DATA
    where ID = #{ID,jdbcType=DECIMAL}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    delete from USER_DATA
    where ID = #{ID,jdbcType=DECIMAL}
  </delete>
  <delete id="deleteByExample" parameterType="com.example.demo.UserDataExample">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    delete from USER_DATA
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </delete>
  <insert id="insert" parameterType="com.example.demo.UserData">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    insert into USER_DATA (ID, NAME, BIRTH_YEAR, 
      BIRTH_MONTH, BIRTH_DAY, SEX, 
      MEMO)
    values (#{ID,jdbcType=DECIMAL}, #{NAME,jdbcType=VARCHAR}, #{BIRTH_YEAR,jdbcType=DECIMAL}, 
      #{BIRTH_MONTH,jdbcType=DECIMAL}, #{BIRTH_DAY,jdbcType=DECIMAL}, #{SEX,jdbcType=CHAR}, 
      #{MEMO,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.example.demo.UserData">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    insert into USER_DATA
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="ID != null">
        ID,
      </if>
      <if test="NAME != null">
        NAME,
      </if>
      <if test="BIRTH_YEAR != null">
        BIRTH_YEAR,
      </if>
      <if test="BIRTH_MONTH != null">
        BIRTH_MONTH,
      </if>
      <if test="BIRTH_DAY != null">
        BIRTH_DAY,
      </if>
      <if test="SEX != null">
        SEX,
      </if>
      <if test="MEMO != null">
        MEMO,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="ID != null">
        #{ID,jdbcType=DECIMAL},
      </if>
      <if test="NAME != null">
        #{NAME,jdbcType=VARCHAR},
      </if>
      <if test="BIRTH_YEAR != null">
        #{BIRTH_YEAR,jdbcType=DECIMAL},
      </if>
      <if test="BIRTH_MONTH != null">
        #{BIRTH_MONTH,jdbcType=DECIMAL},
      </if>
      <if test="BIRTH_DAY != null">
        #{BIRTH_DAY,jdbcType=DECIMAL},
      </if>
      <if test="SEX != null">
        #{SEX,jdbcType=CHAR},
      </if>
      <if test="MEMO != null">
        #{MEMO,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="com.example.demo.UserDataExample" resultType="java.lang.Long">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    select count(*) from USER_DATA
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByExampleSelective" parameterType="map">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    update USER_DATA
    <set>
      <if test="record.ID != null">
        ID = #{record.ID,jdbcType=DECIMAL},
      </if>
      <if test="record.NAME != null">
        NAME = #{record.NAME,jdbcType=VARCHAR},
      </if>
      <if test="record.BIRTH_YEAR != null">
        BIRTH_YEAR = #{record.BIRTH_YEAR,jdbcType=DECIMAL},
      </if>
      <if test="record.BIRTH_MONTH != null">
        BIRTH_MONTH = #{record.BIRTH_MONTH,jdbcType=DECIMAL},
      </if>
      <if test="record.BIRTH_DAY != null">
        BIRTH_DAY = #{record.BIRTH_DAY,jdbcType=DECIMAL},
      </if>
      <if test="record.SEX != null">
        SEX = #{record.SEX,jdbcType=CHAR},
      </if>
      <if test="record.MEMO != null">
        MEMO = #{record.MEMO,jdbcType=VARCHAR},
      </if>
    </set>
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByExample" parameterType="map">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    update USER_DATA
    set ID = #{record.ID,jdbcType=DECIMAL},
      NAME = #{record.NAME,jdbcType=VARCHAR},
      BIRTH_YEAR = #{record.BIRTH_YEAR,jdbcType=DECIMAL},
      BIRTH_MONTH = #{record.BIRTH_MONTH,jdbcType=DECIMAL},
      BIRTH_DAY = #{record.BIRTH_DAY,jdbcType=DECIMAL},
      SEX = #{record.SEX,jdbcType=CHAR},
      MEMO = #{record.MEMO,jdbcType=VARCHAR}
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByPrimaryKeySelective" parameterType="com.example.demo.UserData">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    update USER_DATA
    <set>
      <if test="NAME != null">
        NAME = #{NAME,jdbcType=VARCHAR},
      </if>
      <if test="BIRTH_YEAR != null">
        BIRTH_YEAR = #{BIRTH_YEAR,jdbcType=DECIMAL},
      </if>
      <if test="BIRTH_MONTH != null">
        BIRTH_MONTH = #{BIRTH_MONTH,jdbcType=DECIMAL},
      </if>
      <if test="BIRTH_DAY != null">
        BIRTH_DAY = #{BIRTH_DAY,jdbcType=DECIMAL},
      </if>
      <if test="SEX != null">
        SEX = #{SEX,jdbcType=CHAR},
      </if>
      <if test="MEMO != null">
        MEMO = #{MEMO,jdbcType=VARCHAR},
      </if>
    </set>
    where ID = #{ID,jdbcType=DECIMAL}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.example.demo.UserData">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Oct 02 18:49:46 JST 2020.
    -->
    update USER_DATA
    set NAME = #{NAME,jdbcType=VARCHAR},
      BIRTH_YEAR = #{BIRTH_YEAR,jdbcType=DECIMAL},
      BIRTH_MONTH = #{BIRTH_MONTH,jdbcType=DECIMAL},
      BIRTH_DAY = #{BIRTH_DAY,jdbcType=DECIMAL},
      SEX = #{SEX,jdbcType=CHAR},
      MEMO = #{MEMO,jdbcType=VARCHAR}
    where ID = #{ID,jdbcType=DECIMAL}
  </update>
</mapper>

要点まとめ

  • MyBatis Generatorを利用すると、SpringフレームワークでMyBatisを利用する際に必要な、EntityクラスやMapperクラス、Mapperクラスが参照するXMLファイルを自動生成できる。
  • STS上でMyBatis Generatorを利用するには、MyBatis GeneratorをEclipse マーケットプレースからインストールし、定義ファイル「generatorConfig.xml」を作成後、実行すればよい。