MyBatis3.xを試してみました。

MyBatis3.xを試してみました。

仕事でSpring MVC + MyBatis 3.xを使う必要が出てきて、久しぶりに触ったので、自分用にサンプルとメモを残します。

以前はSpringとMyBatis 2.xのフレームワークだったのですが、数年が経ってバージョンアップしたようです。

ちなみに、今回はSpringによるラッパーフレームワークは使わず、MyBatis 3.xのみで動かしてみました。

サンプルコード

勉強メモとして作ったサンプルコード。

https://github.com/momotaro-lucy/mybatis_sample

参考

公式サイト

MyBatisの公式サイトが素直にわかりやすいのですが、チュートリアル的なものが弱く、そのまま動かして試してみるには辛かったです。

https://mybatis.github.io/mybatis-3/ja/getting-started.html

書籍

MyBatisを専門に扱った日本語書籍はないと思いますが、こちらのSpringの入門本にMyBatis 2.xと3.xの両方が解説されており、わかりやすいです。

Spring3入門 ――Javaフレームワーク・より良い設計とアーキテクチャ

Spring3入門 ――Javaフレームワーク・より良い設計とアーキテクチャ

メモ

MyBatisは、SQLを記述するタイプのORマッパーで、 テーブルとオブジェクトのマッピングというより、SQLとオブジェクトとのマッピングを作っていくイメージ。

  1. SQLマッピングさせるためのエンティティクラスの作成

    SQLとやり取りさせるエンティティクラスを定義します。カラム名のフィールドとセッター・ゲッターを定義したただのBeanで問題なし。

    1で作成するSQLに記述するバインドフィールドとフィールド名が一致する必要あり。

  2. SQLはMapper XML ファイルに記述する。

    Mapper XML ファイルには、SQLマッピングするエンティティクラスの指定を行う。

    注意点としては、SQLから取得できるカラム名がエンティティクラスのフィールド名と一致しないと自動でバインドしてもらえない。アンダーバーでつないでいるとカラム名とキャメルケースのフィールド名を自動でバインドしてくれなかった。

    上記のようなマッピングJPAアノテーションで記述しても効かない。

  3. Mapper インターフェイスに定義したSQLに対応するメソッドを定義する。

    XMLで定義したSQLにひもづくメソッドを定義する。

    XMLでパラメータ・戻り値の型定義を行っていますが、こちらのインターフェースで重複して定義が必要みたい?

    むしろ、こちらのインターフェースにSQLアノテーションで記述して、XMLを廃することもできるみたい。