データベースを照会するインライン・メソッドの戻りの型

Data インターフェースで query() メソッドを使用してデータベースを照会する場合、それらのメソッドは以下のタイプのオブジェクトに照会結果全体を戻すことができます。

表 2 は、Data インターフェースにおける照会メソッドごとの戻りの型を示しています。

表 1. 戻りの型に関する表のキー
省略形 意味
I Iterator
L List
M Map
O Object
RS ResultSet
S String
T 汎用クラス。これは、プリミティブ Java タイプのラッパー・クラス、または Bean になる可能性があります。
表 2. Data インターフェースにおける queryXxx() メソッドごとの戻りの型.
  戻りの型
queryXxx() メソッド RS L<M<S,O>> L<T> M<S,O> M<S,O>[] <T> <T>[] I<M<S,O>> I<T>
Data.queryArray()         X        
returnClass を伴う Data.queryArray()             X    
RowHandler を伴う Data.queryArray()             X    
Data.queryList()   X              
returnClass を伴う Data.queryList()     X            
RowHandler を伴う Data.queryList()     X            
Data.queryIterator()               X  
returnClass を伴う Data.queryIterator()                 X
RowHandler を伴う Data.queryIterator()                 X
Data.queryFirst()       X          
returnClass を伴う Data.queryFirst()           X      
RowHandler を伴う Data.queryFirst()           X      
Data.queryResults() X                
ResultHandler を伴う Data.query()           X      

以下のリストは、基本的な戻りの型について説明しています。

Iterator<T>

Iterator オブジェクトが、行に対応する各エレメントとともに戻されることを指定します。 パラメーター化されたタイプ T を指定する必要があります。

pureQuery における反復子のタイプは ResultIterator です。使用し終えたら、ResultIterator.close() メソッドでそれらの反復子を閉じる必要があります。

List<T>
タイプ T の List オブジェクトが戻されることを指定します。 指定された SQL ステートメントが照会である場合、各エレメントは照会結果の行に対応します。
メソッドが呼び出され、基礎となるデータベース ResultSet オブジェクトが閉じられると、すべての照会結果の行がマテリアライズされます。
Map<String,Object>
Map オブジェクトが構成されて戻されることを指定します。 指定された SQL ステートメントの戻り列ラベルはマップのキーになります。 一般的な Java コーディング・スタイルへの準拠性を高めるために、列ラベルは小文字に変換されます。 照会結果の行からの対応する列値は、Map オブジェクトの値になります。

提供された SQL ステートメントが照会であり、複数の行が該当する場合、最初の行からの値が戻されます。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

<T>

スカラーまたは Bean が戻されることを指定します。スカラーは、Double などのラッパー、または StringDateTimestamp にすることができます。

複数の行が該当する場合、最初の行からの値が戻されます。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

<T>[]
Employee[]Integer[]、または String[] などの、タイプ T の配列が戻されることを指定します。各エレメントは、照会結果の行に対応します。
メソッドが呼び出され、基礎となるデータベース ResultSet オブジェクトが閉じられると、すべての照会結果の行がマテリアライズされます。

<T> オブジェクトの戻りに関する制約事項

Data インターフェースのメソッドを使用する場合、<primitive Java type>.class クラスのいずれか (int.class など) である汎用 <T> クラスを指定しないでください。

SQL NULL 値に関する情報は、SQL から照会された情報がプリミティブ Java タイプに格納されると失われます。 さらに、Java は、<primitive Java type>.class の汎用 <T> クラスを指定する汎用メソッドが、そのプリミティブ Java タイプに適したラッパー・クラスのインスタンスを戻すように要求します。

例えば、Java は以下のようなメソッドの起動を許可しません。
int tCount = data.queryFirst("select ...", int.class, p);
なお、queryFirst() メソッドの定義は以下のとおりです。
<T> T data.queryFirst(String sql, Class<T> returnType, Object... params);
tCount の宣言されたクラスは Integer でなければなりません。
Integer tCount = data.queryFirst("select ...", Integer.class, p);

フィードバック