MyBatisとは?使い方やSpringとの連携方法をサンプル付きで解説!
2022.06.24

JavaでWebアプリケーションを開発するうえで忘れてはいけないのが「データベース」の存在です。

MyBatisは、データベースを扱うためのフレームワークで、データベースの処理を簡略化する機能が揃っています。


本記事では、MyBatisの特徴やメリット、使い方を紹介していきます。


1.MyBatis(マイバティス)とは?

MyBatisは、Javaでデータベースを扱うためのフレームワークです。プログラムからデータベースを利用する際の処理を簡略化する「O/Rマッパー」の機能をもちます。

①O/Rマッパーとは?

O/Rマッパーとは、オブジェクト(Object)とデータベース(RDB)を容易に変換(マッピング)するための機能を指します。


プログラム上から、データベース上のデータを取得する場合、

  1. データベースへ接続する
  2. SQLを発行する
  3. データベースからデータを取得する
  4. データベースの取得結果からJavaのデータに変換する

という処理が必要です。

ORマッパーは、これらの面倒な処理を省き、データベースの情報とJavaのオブジェクトを紐づけて変換してくれます。


そのため、データベースアクセスの仕組みを意識することなく、容易にデータベースアクセスが実現可能になるのです。

②MyBatisと他のORマッパーの違い

多くのORマッパーは、データベースのテーブルとJavaのオブジェクトを紐づけて管理します。
データベースのテーブルと同じJavaオブジェクトを用意するだけでよいため、非常に扱いやすいというのが大きなメリットです。


それに対し、MyBatisはテーブルではなくSQLの実行結果に対してORマッピングを行います。

MyBatisは大規模開発に向いている

この「SQLにマッピングする」という特徴は、大規模システムの開発において非常に有用です。


大規模開発の場合、データベースのレコード数が非常に多くなるため、「正規化」と呼ばれる作業を行います。

正規化されたデータベースは、重複された情報を保持しないように設計されています。よって、データの検索をする場合には複数のテーブルを結合する必要があるのです。


テーブルに対してマッピングするORマッパーの場合、多くのテーブルを結合するために長いコードを書く必要がありますが、MyBatisであればテーブル結合を前提としたSQLを作成するだけで済むのです。


そのため、MyBatisは大規模開発において採用率の高いフレームワークと言えます。

2.MyBatisを使うメリット


次に、MyBatisを利用することによるメリットを紹介します。

①開発効率が上がる

MyBatisを利用することで、データベース操作に関する処理が簡略化され、Javaのコードが最小限で済みます。


データベースに接続するためのプログラムを一切書く必要がないため、多くのデータベースアクセスをするシステムこそ、MyBatisによる大きな恩恵を受けられるのです。

②学習コストが低い

MyBatis自体の機能はあまり多くありません。
XMLを利用した記述方法さえマスターしてしまえば、あとはSQLを記述するだけで簡単にデータベースにアクセスできます。


また後述のMyBatis Generatorを利用することで、必要なファイルが自動生成されるため、開発者はSQLを記述するだけで済みます。


そのため、データベースに関する基礎的な知識さえあれば容易に利用できるということが、MyBatisの大きな特徴と言えるでしょう。

③豊富なプラグインを利用できる

Java開発に必要不可欠なIDEであるEclipseやIntelliJには、MyBatisを便利に利用できる豊富なプラグインが提供されています。


後述する「MyBatis Generator」も、便利なプラグインのひとつです。


これらのプラグインを活用することで、さらに高速なアプリケーション開発が可能となるのです。



3.MyBatisの主な機能


MyBatisの特徴やメリットをつかんだところで、MyBatisのもつ便利な機能を紹介します。

①データマッピング機能

MyBatisの主機能である、ORマッピングの機能です。
XMLにSQLを記述することで、Javaオブジェクトへのマッピングを自動で行います。

②DBスキーママイグレーション機能

開発を進めるうえで、データベースのテーブル構成に変更が発生する場合があります。MyBatisのマイグレーション機能を利用することで、データベースの変更を自動化できます。

③コードジェネレータ機能

後述するMyBatis Generatorを利用することで、テーブルの情報からJavaのコードを自動で生成できます。

④各種フレームワーク連携機能

Spring Frameworkをはじめとする、各種Javaフレームワークと連携して利用できます。

⑤キャッシュ機能

検索結果をキャッシュすることで、まったく同じ結果が得られるような検索の場合には、SQLを発行せずにそのキャッシュからデータを取得します。

⑥ロギング機能

ログ機能を有効化することで、データベースへのアクセスだけでなく発行したSQLやパラメータをログへ出力できます。



4.Spring+MyBatisを使ってみよう


それでは、実際にSpringを使ったWebアプリケーションにMyBatisを導入して、データベースを操作する方法を紹介します。

Springを利用するにあたり、Mavenを利用したインストールを行います。


Springについての詳しい説明は以下の記事を確認してみてください。

①前提条件

前提条件として、以下のインストールが終わっているものとします。


・Java

・Maven

・Eclipse

②Spring Bootプロジェクトの作成

まずは、Spring Bootのプロジェクトを作成してみましょう。
すでにSpring Bootのプロジェクトを作成済みの場合、この手順はスキップしてください。


「ファイル > 新規 > その他」を選択します。

Eclipseのファイルタブから新規、その他を選択した画面

ウィザードが表示されるので、「Spring」と検索することで、以下のように検索結果が表示されます。


「Spring スターター・プロジェクト(Spring Initializr)」を選択し、「次へ」を選択します。

ウィザード選択画面

次に、プロジェクトの情報を入力します。

それぞれ、以下のように入力しましょう。

項目名入力内容
名前mybatis-sample
タイプMaven Project
グループjp.co.trainocamp.demo
成果物mybatis-sample
説明(空)
パッケージjp.co.trainocamp.demo.mybatis

入力が終わったら、「次へ」を選択します。

スタータープロジェクトの情報入力画面

今度は、Mavenに追加する依存関係を設定します。
今回はSpring Data JPAは使用しないため外しておきましょう。


最終的に、以下の項目が選択済みとなっていることを確認し、「次へ」を選択します。


・Spring Boot DevTools

・Lombok

・H2 Database

・Thymeleaf

・Spring Web

スタータープロジェクトの依存関係設定画面

確認画面が表示されますので、そのまま「完了」をクリックしましょう。

スタータープロジェクトの確認画面

以下のようにプロジェクトができあがっていれば完了です。

プロジェクトが完成した画面

③MyBatisのライブラリを取得

作成したプロジェクトにMyBatisをインストールするため、pom.xmlにMyBatis依存関係を追加しましょう。

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.2.2</version>
</dependency>

また、MyBatisはデータベースを利用するため、一緒にデータベースの準備が必要です。

以下の項目がpom.xmlにないのであれば、一緒に追加しましょう。

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>

最終的に、以下のような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.6.6</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>jp.co.trainocamp.demo</groupId>
	<artifactId>mybatis-sample</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>mybatis-sample</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.2.2</version>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</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-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

④Entityの作成

ここからは、ソースコードを作成していきます。

まずは、ORマッピングの項目と対になるEntityを作成します。

package jp.co.trainocamp.demo.mybatis.entity;

import lombok.Data;

/**
 * ユーザー情報を格納するデータ
 *
 */
@Data
public class User {

	/** ID */
	private int userId;
	/** 氏名 */
	private String name;
	/** 年齢 */
	private int age;
}

⑤Mapperインターフェース作成

JavaのプログラムからMyBatisを呼び出すためのMapperインターフェースを作成します。

package jp.co.trainocamp.demo.mybatis.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;

import jp.co.trainocamp.demo.mybatis.entity.User;

@Mapper
public interface UserMapper {

	/**
	 * 全ユーザーを取得
	 * 
	 * @return 全ユーザーの情報
	 * 
	 */
	List<User> selectAll();
}

データベースにアクセスするための処理としては、Mapperインターフェースを定義するだけです。このインターフェースを定義することで、データベースへアクセスする機能が自動で生成されます。

⑥マッピングファイル作成

インターフェースを作成したら、マッピングを行うための設定であるXMLファイルを作成します。


XMLファイルは、src/main/resourcesに作成しますが、Mapperインターフェースのパッケージと同じとなるようにフォルダを作成するのが通例です。


そのため、今回は以下の場所へXMLファイルを作成しましょう。


src/main/resources/jp/co/trainocamp/demo/mybatis/mapper/PlaceMapper.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="jp.co.trainocamp.demo.mybatis.mapper.UserMapper">
	<resultMap id="userMap"
		type="jp.co.trainocamp.demo.mybatis.entity.User">
		<result column="ID" jdbcType="INTEGER" property="userId" />
		<result column="NAME" jdbcType="VARCHAR" property="name" />
		<result column="AGE" jdbcType="INTEGER" property="age" />
	</resultMap>
	<select id="selectAll" resultMap="userMap">
		SELECT ID, NAME, AGE FROM USER
	</select>
</mapper>

⑦Mapperオブジェクトのメソッドを呼び出す

マッパーのインターフェースとXMLを作成したら、マッパーを呼び出すプログラムを作成します。

今回は、SpringBootのコントローラーからマッパーを呼び出してみましょう。

コントローラー

package jp.co.trainocamp.demo.mybatis.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

import jp.co.trainocamp.demo.mybatis.mapper.UserMapper;

@Controller
public class UserListController {

	@Autowired
	private UserMapper userMapper;
	
	@GetMapping("/")
	public ModelAndView listAll() {
		
		ModelAndView mav = new ModelAndView("index");
		
		// すべてのユーザーを取得する
		mav.addObject("users", userMapper.selectAll());
		
		return mav;
	}
}

ビュー

表示するHTMLを作成します。今回はThymeleafを使用するため、以下の場所へHTMLファイルを作成しましょう。


src/main/resources/templates/index.html

<!DOCTYPE html>
<html lang="jp" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>All Users</h1>
	<table border="1">
		<thead>
			<tr>
				<th>ID</th>
				<th>Name</th>
				<th>Age</th>
			</tr>
		</thead>
		<tbody>
			<tr th:each="user : ${users}">
				<td th:text="${user.userId}"></td>
				<td th:text="${user.name}"></td>
				<td th:text="${user.age}"></td>
			</tr>
		</tbody>
	</table>
</body>
</html>

⑧データベースの準備

プログラムの準備ができたら、アクセスするデータベースの準備をしましょう。

今回は、データベースとして「H2DB」を利用しますので、使用する準備をします。

使用するデータの準備

H2DBは、「schema.sql」と「data.sql」を作成することで、アプリケーションの起動時にテーブル生成とデータ挿入を自動で実施してくれます。


schema.sql


schema.sqlには、テーブル作成のSQLを記述します。

src/main/resources/schema.sql」を作成し、以下のSQLを記述します。

DROP TABLE IF EXISTS USER;

CREATE TABLE USER (
  ID INT NOT NULL,
  NAME VARCHAR(50),
  AGE INT,
  PRIMARY KEY(ID)
);


data.sql


data.sqlには、生成したテーブルに挿入するデータの内容を記述します。


src/main/resource/data.sql

INSERT INTO USER (ID, NAME, AGE) VALUES (1, 'SATO TARO', 18);
INSERT INTO USER (ID, NAME, AGE) VALUES (2, 'TAKAHASHI JIRO', 20);
INSERT INTO USER (ID, NAME, AGE) VALUES (3, 'SUZUKI SABURO', 21);

接続設定の追加

src/main/resource/application.properties」を以下のように変更します。

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:./h2db/userdb;DB_CLOSE_ON_EXIT=TRUE
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true


spring.sql.init.mode=always 

これで、準備完了です。


「spring.sql.init.mode=always」を指定することで、実行するたびにデータベースの中身が初期化されてしまいます。

2回目以降に実行する場合には、以下のように変更することでデータベースが再作成されなくなります。


変更前

spring.sql.init.mode=always

変更後

spring.sql.init.mode=never

⑨実行する

ここまで作成したらアプリを実行してみましょう。

http://localhost:8080/へアクセスし、以下のように表示されれば完了です。

USERテーブルが表示された画面



5.よく使われるタグ

ここまでは基本的なMyBatisの使い方を解説してきました。
ここからは、システム開発において実用的に使えるテクニックを紹介していきます。

①select/insert/update

先ほどのサンプルでは、検索を行うため「select」を利用してタグを設定しました。

同様に、データを追加する場合にはinsert、更新する場合にはupdateを使ってSQLを設定する必要があります。


例として、更新、追加、更新をすべて満たすマッパーを作ってみましょう。

<?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="jp.co.trainocamp.demo.mybatis.mapper.UserMapper">
	<resultMap id="userMap"
		type="jp.co.trainocamp.demo.mybatis.entity.User">
		<result column="ID" jdbcType="INTEGER" property="userId" />
		<result column="NAME" jdbcType="VARCHAR" property="name" />
		<result column="AGE" jdbcType="INTEGER" property="age" />
	</resultMap>
	<!-- すべてのユーザーを検索 -->
	<select id="selectAll" resultMap="userMap">
		SELECT ID, NAME, AGE FROM USER
	</select>
	<!-- 更新 -->
	<update id="update">
		UPDATE USER
		SET
			NAME = #{name},
			AGE  = #{age}
		WHERE
			ID = #{userId}
	</update>
	<!-- 追加 -->
	<insert id="insert" >
		INSERT INTO USER
			(ID, NAME, AGE)
		VALUES
			(#{userId}, #{name}, #{age})
	</insert>
</mapper>

同様に、これらのXMLに対応するよう、マッパーインターフェースにメソッドを追加します。

package jp.co.trainocamp.demo.mybatis.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import jp.co.trainocamp.demo.mybatis.entity.User;

@Mapper
public interface UserMapper {
	
	/**
	 * 全ユーザーを取得
	 * 
	 * @return 全ユーザーの情報
	 * 
	 */
	List<User> selectAll();
	
	/**
	 * ユーザーの更新
	 * @param user 更新するユーザーの情報
	 */
	void update(User user);
	
	/**
	 * ユーザーの登録
	 * @param user 登録するユーザーの情報
	 */
	void insert(User user);
}

このとき、XMLに記載した「id」の値と、マッパーインターフェイスのメソッド名を一致させるようにしましょう。

②if

検索機能を実装する場合、「名前が入力されていたらその条件に合致したユーザーを検索する」といった処理を実装するでしょう。


その場合に便利なのが「if」です。


selectタグの中でifを利用することで、「条件に応じてその内容をSQLに適用する(追加する)」ということが可能になります。

<select id="search" resultMap="userMap">
    SELECT ID, NAME, AGE FROM USER
    <if test="name != null">
    WHERE
        NAME LIKE concat('%', #{name}, '%')
    </if>
</select>

この際、マッパーには以下のメソッドを追加します。

/**
 * 検索
 * @param name 氏名
 * @return 検索結果
 */
List<User> search(String name);

こうすることで、nameの項目がnullの場合とそうでない場合で、発行されるSQLが変化します。

nameがnullの場合

SELECT ID, NAME, AGE FROM USER

nameがnullではない場合

SELECT ID, NAME, AGE FROM USER WHERE NAME like '%?%'

このように、プログラムの実行時に発行されるSQLが変動するものを「動的SQL」と呼びます。

タグを活用することで、便利に動的SQLを構築できるのもMyBatisの大きな強みです。

③choose

chooseは、ifだけでは難しい複雑な条件式を用いた動的SQLを作る場合に利用します。


先ほどのサンプルでは「name(氏名)」にのみ着目して動的SQLを構成しましたが、今度は年齢も加味した検索をしてみましょう。


以下のような検索をしてみたいと思います。


・氏名が入力された場合には年齢の値を無視して検索

・氏名が未入力の場合には、入力された年齢で検索

<select id="search" resultMap="userMap">
    SELECT ID, NAME, AGE FROM USER
    WHERE
    <choose>
        <when test="name != null">
            NAME LIKE concat('%', #{name}, '%')
        </when>
        <when test="age != null">
            AGE = #{age}
        </when>
    </choose>
</select>

また、検索条件に年齢を追加したので、マッパーに定義したメソッドも以下のように変更しておきましょう。

/**
 * 検索
 * @param name 氏名
 * @param age 年齢
 * @return 検索結果
 */
List<User> search(String name, Integer age);

こうすることで、マッパーの引数のnameとageの変数の状況に応じて発行されるSQLが変化します。

nameがnullでない場合に発行されるSQL

SELECT ID, NAME, AGE FROM USER WHERE NAME like '%?%'

nameがnullの場合に発行されるSQL

SELECT ID, NAME, AGE FROM USER WHERE AGE = ?

④where

前述のchooseのサンプルを実行したとき、nameもageもnullの場合にはエラーとなってしまいます。

該当する条件式がないため、以下のような条件式がないSQLが発行され、構文エラーが発生してしまったことが原因です。

SELECT ID, NAME, AGE FROM USER WHERE

そのため、いずれの条件にも合致しない場合にはWHEREをつけないということが必要です。

そんな時には「where」を利用します。


先ほどのselectの内容を、以下のように変更しましょう。

<select id="search" resultMap="userMap">
    SELECT ID, NAME, AGE FROM USER
    <where>
        <choose>
            <when test="name != null">
                NAME LIKE concat('%', #{name}, '%')
            </when>
            <when test="age != null">
                AGE = #{age}
            </when>
        </choose>
    </where>
</select>

こうすることで、条件式が空の場合にはSQLに「WHERE」が付与されずに済みます。

⑤foreach

プログラムから動的SQLを生成する際に、リストの個数に応じてIN句の中身を変動させたい場合もあります。

そんな時に利用するのがforeachです。


例として、指定されたIDのユーザーを検索してみましょう。

<select id="selectInId" resultMap="userMap">
    SELECT ID, NAME, AGE FROM USER
    <where>
        <if test="ids.size() > 0">
        ID in 
        <foreach item="id" collection="ids" open="(" separator="," close=")">
            #{id}
        </foreach>
        </if>
    </where>
</select>

マッパーインターフェースには、リストを受け取るようにメソッドを定義します。

/**
 * 指定したIDのユーザーを検索
 * @param ids IDのリスト
 * @return 検索結果
 */
List<User> selectInId(List<Integer> ids);

これだけで、引数に指定したリストに格納されたIDを持つユーザーが検索できます。



6.MyBatis Genaratorの使い方


最後に、Eclipse上でMyBatisを便利に使うためのプラグインである「MyBatis Generator」を紹介します。


MyBatis Generatorを利用することで、先ほど紹介したマッパーやXMLを自動で生成してくれるため、MyBatisを利用するのであればあわせて活用してきましょう。

①データベースの準備

すでに「USER」テーブルのマッパーは作成しているので、マッパーを自動生成させるために、新たにテーブルを作成しましょう。


schema.sqlを開き、以下のように変更します。

CREATE TABLE IF NOT EXISTS USER (
  ID INT NOT NULL,
  NAME VARCHAR(50),
  AGE INT,
  PRIMARY KEY(ID)
);
-- 自動生成用のテーブルを追加
CREATE TABLE IF NOT EXISTS PLACE (
  ID INT NOT NULL,
  NAME VARCHAR(50)
);

これでアプリケーションを再起動すれば、「PLACE」というテーブルが自動で生成されます。

それでは、このPLACEテーブルに対するマッパーを自動で生成してみましょう。

②MyBatis Generatorをインストール

EclipseにMyBatis Generatorをインストールしてみましょう。

「ヘルプ > Eclipse マーケットプレース」を選択します。

Eclipseのヘルプタブ画面

マーケットプレースが表示されますので、「MyBatis」と入力して検索します。

すると、以下のように「MyBatis Generator」が表示されるので、「インストール」を選択しましょう。

MyBatisで検索した画面

ライセンスの確認画面が表示されますので、「使用条件の条項に同意します」をチェックし、「完了」を選択します。

ライセンスのレビュー画面

途中で、以下のようなダイアログが表示されるので「インストール」を選択します。

セキュリティー警告画面

インストールが完了したら、以下のように再起動を促されます。

作成途中のプログラムがあれば保存し再起動しましょう。

ソフトウェア更新の確認ダイアログ

③generatorConfig.xmlを配置

自動でマッパーを生成するための設定を作成します。


generatorConfig.xmlを「src/main/resources」に作成します。

このとき、connectionURLの内容には、h2dbの場所を指定するように注意しましょう。


この例では、Eclipseのワークスペースが「c:\pleiades\workspace」の場合を表しています。

<?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="userdb" targetRuntime="MyBatis3">
		<!-- 接続設定 -->
		<jdbcConnection driverClass="org.h2.Driver"
			connectionURL="jdbc:h2: C:\pleiades\workspace\mybatis-sample\h2db\userdb "
			userId="sa" password="" />

		<javaTypeResolver>
			<property name="useJSR310Types" value="true" />
		</javaTypeResolver>

		<!-- Java Modelの生成に関する設定 -->
		<javaModelGenerator
			targetPackage="jp.co.trainocamp.demo.mybatis.entity"
			targetProject="mybatis-sample/src/main/java">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- XMLの生成に関する設定 -->
		<sqlMapGenerator
			targetPackage="jp.co.trainocamp.demo.mybatis.mapper"
			targetProject="mybatis-sample/src/main/resources">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>

		<!-- マッパークラスを生成する設定 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="jp.co.trainocamp.demo.mybatis.mapper"
			targetProject="mybatis-sample/src/main/java">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<!-- コード生成対象とするテーブルの情報 -->
		<table tableName="place">
			<property name="useActualColumnNames" value="true" />
		</table>
	</context>
</generatorConfiguration>

④ファイルを自動生成

プロジェクトを右クリックし、「実行 > 実行の構成」を選択します。

プロジェクトを右クリックし、実行を選択した画面

実行の構成ダイアログが表示されるので、「MyBatis Generator」を選択し、「新規作成」のアイコンをクリックします。


すると設定画面が表示されるので、先ほど作成したgeneratorConfig.xmlを指定し、「実行」をクリックしましょう。

実行構成の管理画面

以下のようにコンソールに表示されていれば生成完了です。

ビルド成功が表示された画面

実行が終わったら、以下のように3つのファイルが自動で生成されていることを確認しましょう。

Place.java、PlaceMapper.java、PlaceMapper.xmlが自動生成されている

あとは、生成された「PlaceMapper」を利用することでデータベースへアクセスできます。



7.プログラミング学習ならトレノキャンプへ


トレノキャンプでは、MyBatisの使い方をより実践的に学べる講座をオンラインで提供しています。オンデマンド配信なので、いつでも好きなときに受講が可能です。講座の詳しい内容は下記のリンクをクリックしてご覧ください。

この記事をシェア
おすすめの受講コース
  • Springシリーズ③ ~O/Rマッピングツール MyBatisによるデータベース操作~
  • 現場で活かせるWebシステム開発(Spring編)【Springシリーズ 1~3パック】
  • はじめてのデータベース ~仕組みの理解とSQL~
  • TRAINOCAMPプレミアムパック-データ分析からWEB開発まで専門コースを含むコンプリート版-(30日間)