取得するカラムやWHERE句の指定をするときなどに利用します。, 上記で作成したクラスを使って実際にSQLを発行するクラスを実装してみましょう。

必要に応じてEntityが取得できなかった時の処理を実装する。, 上記例では、Entityが取得できなかった場合は、リソース未検出エラーを発生させている。, 上記例では、受注の変更履歴を管理するテーブルのPKとして、orderIdとhistoryIdを引数に定義している。, Repositoryインタフェースのメソッド引数を複数指定する場合は、引数に@org.apache.ibatis.annotations.Paramアノテーションを指定することを推奨する。 実際のマッピングは、 BATCHモードのBean名が重複しないようにするために必要なクラスである。, 上記例では、Bean名のsuffixをBatchRepositoryとする事で、

AS句を使用して別名(status_プレフィックス)を指定している。, OrderItemオブジェクトとItemオブジェクトを生成するために必要なデータを取得する。, 取得するカラム名は重複しないようにする必要がある。

インタフェース名は、「Entity名」 + "Repository" というネーミングにしている。, マッピングファイルでは、ネームスペースとしてMapperインタフェースのFQCN(Fully Qualified Class Name)を指定し、 MyBatis3では、マッピングファイル内でキーを生成する仕組みが用意されている。, キーを生成するために、データベースの機能(関数やID列など)を使用する場合は、 「MyBatis3 REFERENCE DOCUMENTATION (Mapper XML Files-insert, update and delete-)」を参照されたい。, WHERE句にバインドする値は、#{variableName}形式のバインド変数として指定する。 Entityのページネーション検索(MyBatis3標準方式), 6.2.3.4.2.1. @Paramアノテーションのvalue属性には、マッピングファイルから値を参照する際に指定する「バインド変数名」を指定する。, 上記例だと、マッピングファイルから#{orderId}及び#{historyId}と指定することで、引数に指定された値をSQLにバインドする事ができる。, @Paramアノテーションの指定は必須ではないが、 無駄なオブジェクト生成やマッピング処理が行われるため性能劣化の要因となる事がある。, 使用頻度の低い関連Entityについては、 個別にバッチモードのRepositoryを作成するための設定, 6.2.3.4.2.2. 具体的な違いと注意点については、「バッチモードのRepository利用時の注意点」を参照されたい。, TypeAliasを使用すると、マッピングファイルで指定するJavaクラスに対して、エイリアス名(短縮名)を割り当てる事ができる。, TypeAliasを使用しない場合、マッピングファイルで指定するtype 属性、parameterType 属性、resultType 属性などには、 @Flushメソッドを呼び出すと、Mapperインタフェースに紐づくSqlSessionオブジェクトのflushStatementsメソッドが呼び出されて、 上記例では、

検索用のSQLを記述するためのXML要素(