SQL ステートメントを実行して Bean または Map オブジェクトをビルドする際に、pureQuery が Java および SQL ID の大/小文字を使用する方法

Bean または Map オブジェクトをアノテーション付きメソッドまたはインライン・メソッドで使用して、WHERE 節内のパラメーターに値を渡す場合、照会結果を含めるように Bean または Map が構成されていれば、pureQuery はパラメーター・マーカーおよび SQL 列の大/小文字に関する規則に従います。
  1. Bean または Map オブジェクトをアノテーション付きメソッドまたはインライン・メソッドで使用して、SQL ステートメント内のパラメーターに値を渡す場合、pureQuery はステートメント内のパラメーター・マーカーの名前部分の大/小文字を変更しません。

    pureQuery は、メソッドの入力パラメーターが Bean または Map の場合にのみ、この規則に従います。 パラメーター・マーカーの name 部分の前には : あるいは ? が付くため、pureQuery は、Bean または Map 内の対応するプロパティー値の場所を探索する際に、それらを大/小文字を区別する Java ID であると見なします。

  2. pureQuery が Bean または Map を照会の結果から構成する際には、SQL 列のラベルは小文字に変換されます。 戻りの型が Bean である場合、pureQuery は Bean をビルドします。 戻りの型が Map あるいはおそらく Map オブジェクトの集合である場合、pureQuery は各 Mapput() メソッドに小文字ラベルを渡します。

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" を Mapget(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 がこうしたメソッドを定義する場合)。


フィードバック