2012-02-07 40 views
4

これは私を逃したようです。 myBatisクエリからバニラセットの行を返すためにマップを使うことはできますが、リストのプリミティブ型でそれを行う方法はありますか?MyBatis - プリミティブタイプのリスト

私のようなSQLがある場合:

select product_price from products 

resultMapが必要ですか?結果の型としてjava.util.ArrayListを使用しようとしましたが、get class not foundエラーが発生しました。

同様の方法で、クエリの引数としてアイテムのリストを渡すにはどうすればよいですか。

すべての入力、ドキュメントへのポインタが高く評価されました。

答えて

0

のTreyこの:

あなたはこのように書く場合は、マップのリストとしてそれを取得します:キーは、列名になります

<select id="getPrice" resultType="Hashmap"> 
    select product_price from products 
</select> 

。各マップには1つのエントリが含まれます。あなたはArrayListのを望むなら、あなたはArrayListにこのマップを変換する関数を書くことができます。

public List listFromListOfMap (List<Map> listOfMap) { 

    List<Integer> prices = new ArrayLisyt<Integer>(); 
    for(int i = 0; i < listOfMap.size(); i++) { 

     Integer value = (Integer)listOfMap.get(i).get("product_price"); 
     prices.add(value); 
    } 
    return prices; 
} 

・ホープこのことができます:)

+0

感謝を。単純にresultTypeをClass defに設定すると、(カスタムクラスがある場合は)それらのオブジェクトのリストが得られます。 resultTypeをjava.lang.Integerに設定しただけでは、基本的な型が不思議です。私はそれを試さなければならない。上記のコードをありがとう。 – Joel

1

それはあなたを与えるだろうこのresultMap

<resultMap type="java.lang.Long" id="domainsResult"> 
    <result property="" column="product_price"/> 
</resultMap> 

<select id="getPrice" resultMap="domainsResult"> 
    select product_price from products 
</select> 

を使用してみてくださいリスト価格リスト。

+0

私はのresultmapの要素に空のプロパティを使うので、私の問題は解決します(投稿とは異なります)。本当にありがとう! – realjin

+0

適切な回答に合格とし、この質問を閉じてください。それは他の人にも同様の問題を助けます。 –

6

を希望のプリミティブタイプとして宣言するだけです(この場合はLong)。それはリストとして返されます。あなたがLongのリストを取り戻すことを期待すべきマッパーインタフェースで

<select id="getPrice" resultType="java.lang.Long"> 
    select product_price from products 
</select> 

List<Long> getPrice(); 
0

PRODUCT_PRICE列マッピングのためにあなたのresultmapに内部のコードスニペットの下に使用してみてください -

<collection property="price" ofType="java.lang.Long"> 
       <result property="price" column="product_price"/> 
    </collection>