<Java-MyBatis>Mapper, Model, MapperXMLの関係性を整理する

Java

MyBatis Generatorを使用すると、対象のデータベースに含まれるテーブルからMapper, Model, MapperXMLを生成してくれます。

標準設定で生成すると”EnableSelectByExample”がデフォルトONのため、Exampleのクラスも生成され、初見では関係性が分かりづらくなりますので、関係性を簡単に整理します。Exampleのクラスを生成しない方法は最後に記載しておきます。

Mapper, Model, Resourceの関係性

Customerテーブルを元に生成すると次のようなクラスファイルとXMLファイルの関係性になります。

Model

Modelはテーブルそのもので、各カラムの変数、セッター、ゲッターが定義されています。

Exampleクラスはビジネスロジック寄りで、Modelに対してDistinctやOrderByなど指定します。WEBシステムであれば、別々の画面が同一のModelに対して、それぞれ異なる条件での抽出が必要な場合、その画面ごとにExampleクラスのようなものを作成していくことになります。

MapperとMapperXMLの関係

  • MapperにCRUDのメソッドを定義
  • MapperXMLにCRUDに対応するSQL本体を定義

「selectByPrimaryKey」という名称はMyBatisGeneratorが自動的に命名したもので、主キーをWHERE条件として1レコード取得する動作を行います。これはMyBatisGeneratorの標準動作です。

「selectByExample」はビジネスロジックとしてカスタマイズしていく方向性を示してくれているサンプルです。

MapperとModelの関係

  • 「selectByPrimaryKey」
    主キー抽出で1レコードのみ取得するため単独のCustomerクラスを返却します。
  • 「selectByExample」
    条件によって複数レコード取得するため配列のCustomerクラスを返却します。

Exampleクラスを生成しない

enableSelectByExampleをfalseに設定することでExampleクラスは生成されなくなります。

<?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="default" targetRuntime="MyBatis3">
        <table schema="public" tableName="%" enableSelectByExample="false"></table>
    </context>
</generatorConfiguration>

札幌在住エンジニア。JavaやPHPやWordPressを中心とした記事が中心です。

【SE歴】四半世紀以上
【Backend】php / java(spring) / c# / AdobeFlex / c++ / VB / cobol
【Frontend】 vue.js / jquery他 / javascript / html / css
【DB】oracle / mysql / mariadb / sqlite
【infrastructure】aws / oracle / gcp
【license】aws(saa-c03) / oracle master / XML Master / Sun Certified Programmer for the Java 2 Platform 1.4

Nobelをフォローする
Java
Nobelをフォローする

コメント

タイトルとURLをコピーしました