pureQuery は、メソッドの入力パラメーターが Bean または Map の場合にのみ、この規則に従います。 パラメーター・マーカーの name 部分の前には : あるいは ? が付くため、pureQuery は、Bean または Map 内の対応するプロパティー値の場所を探索する際に、それらを大/小文字を区別する Java ID であると見なします。
ID が Java でのみ使用される場合、pureQuery は ID の同等性に関する Java の規則を変更しません。 さらに、ID が SQL でのみ使用される場合に、pureQuery は ID の同等性に関する SQL の規則を変更することもありません。
例 1
この例では、アノテーション付きメソッドは、Act という Bean を入力パラメーターとして取り、データベースに対して SELECT ステートメントを実行します。SELECT ステートメントの結果は Bean のプロパティーのいずれかの値でフィルターに掛けられます。
@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo") Act getAct(Act a);
SELECT ステートメントを実行する際に、pureQuery は最初に getActNo() メソッドがないかどうか Bean を検索します。 見つからない場合、pureQuery は「actNo」という名前のプロパティーを探します。 それも見つからない場合、pureQuery は String の「actNo」を Bean の get(String) メソッドに渡します (Bean がこうしたメソッドを定義する場合)。
一致するレコードに対応する Act オブジェクトを戻す際に、pureQuery は SQL 列ラベルを小文字にします。次に、pureQuery は Bean をビルドします。
例 2
メソッドが Map を入力パラメーターとして取り、Map オブジェクトの List を戻すとします。
@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo") List<Map<String, Object>> getAct(Map<String, Object> a);
SELECT ステートメントを実行する際に、pureQuery は String "actNo" を Map の get(String) メソッドに渡します。 一致するレコードに対応する Map オブジェクトを戻す際に、pureQuery は、SQL 列ラベルを各 Map オブジェクトの put() メソッドに渡す前に、それらを小文字にします。
例 3
次の例では、別のアノテーション付きメソッドも Act Bean を入力パラメーターとして取り、データベースに対して UPDATE ステートメントを実行します。 ステートメント内の値は、Bean 内のプロパティーからのものです。 メソッドは更新カウントを戻します。
@Update(sql="update ACT set ACTKWD = :actKwd, ACTDESC = :actDesc where ACTNO = :actNo") int updateAct(Act a);
UPDATE ステートメントを実行する際に、pureQuery は、Bean 内の get() メソッドの名前、Bean 内のプロパティーの名前、そして get(String) について、UPDATE ステートメント内のパラメーターが一致していないかどうか検索します。例えば、actKwd という名前のパラメーターの場合、pureQuery は最初に getActKwd() メソッドがないかどうか Bean を調べます。見つからない場合、pureQuery は「actKwd」という名前のプロパティーを検索します。 それも見つからない場合、pureQuery は String の「actKwd」を Bean の get(String) メソッドに渡します (Bean がこうしたメソッドを定義する場合)。