アノテーション付きメソッドを使用する際に複数の Bean を戻す

SELECT ステートメントが複数のデータベース・オブジェクトを照会する場合、アノテーション付きメソッドを使用していると、個別の Bean 内の各オブジェクトからデータを戻すことができます。

手順

複数のデータベース・オブジェクトを照会する 1 つの SELECT ステートメントで、複数の Bean を戻すには、以下のようにします。

  1. LinkedList または ArrayList のいずれかを拡張する汎用クラスを宣言します。 このパラメーター化されたコレクションに含まれるオブジェクト数によって、照会から戻される Bean の数が定義されます。
  2. メソッドのシグニチャーで、戻りの型を Iterator オブジェクトか List オブジェクトのいずれかとして指定します。パラメーター化されたコレクションを、そのオブジェクトの型で指定します。

以下のステートメントを実行する際、Contact Bean に最初の表の結果を、Person Bean に 2 番目の表の結果を戻すとします。

select CONTACTTABLE.IDNUMBER, PERSONTABLE.SSN from CONTACTTABLE, PERSONTABLE

以下のように、汎用クラス ContactAndPerson を定義できます。

public class ContactAndPerson<C, P> extends LinkedList{}

Contact Bean と Person Bean のすべてのペアを Iterator オブジェクトに配置することにします。そのためには、以下のように戻りの型を定義します。

@Select(sql = "select CONTACTTABLE.IDNUMBER, PERSONTABLE.SSN from CONTACTTABLE, PERSONTABLE")  
Iterator<ContactAndPerson<Contact, Person>> selectFromContactPerson ();

フィードバック