メモリー内 Java コレクションを照会するインライン・メソッドの戻りの型

メモリー内コレクションを照会するために Data インターフェースのメソッドを使用する場合、それらのメソッドは以下の型のオブジェクトを戻すことができます。

2 番目の表は、コレクションの照会に使用できる Data インターフェースの各メソッドの戻りの型を示しています。

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

戻りの型の説明

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

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

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

<T>

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

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

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

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

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

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

<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);

フィードバック