2012-02-07 79 views
4

這似乎沒有我。我知道我可以使用map來從myBatis查詢中返回一組vanilla行,但如何使用原始類型的列表來做到這一點?MyBatis - 原始類型列表

例如如果我有SQL:

select product_price from products 

這是否需要resultMap?我試圖使用java.util.ArrayList作爲結果類型,但得到類未找到錯誤。

以類似的方式,我如何將項目列表作爲參數傳遞給查詢。

任何輸入,讚賞文檔的指針。

回答

0

三分球這樣的:

你會得到它的地圖列表,如果你這樣寫:

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

其中關鍵的將是列名。每張地圖將包含一個條目。如果你想要一個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 2012-02-16 23:55:11

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> 

它會給你一個List priceList。

+0

我在resultmap中的元素中使用了空白屬性技巧,它解決了我的問題(與帖子不同)。非常感謝! – realjin 2014-12-10 11:28:45

+0

請標記任何合適的答案並關閉此問題。它也會幫助其他人也有類似的問題。 – 2015-10-05 04:21:25

6

只要聲明resultType作爲你想要的原始類型,在你的情況下是Long。它將作爲列表返回。

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

在映射器界面中,您應該預計會得到一個Long的列表。

List<Long> getPrice(); 
0

嘗試使用下面的代碼片段的結果映射內爲PRODUCT_PRICE列映射 -

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