2012-02-07 2 views
4

Это, похоже, ускользнуло от меня. Я знаю, что могу использовать карту, чтобы вернуть набор ванильных строк из запроса myBatis, но как это сделать с списком примитивных типов?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 в класс 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> 

Это даст вам Список priceList.

+0

Я использую пустые трюки свойств в своих элементах в resultmap, и это решает мою проблему (отличную от поста). Спасибо! – realjin

+0

, пожалуйста, отметьте любой подходящий ответ, как принято, и закройте этот вопрос. Это поможет другим людям с подобной проблемой. –

6

Просто объявите resultType в качестве примитивного типа, который вы хотите, который в вашем случае является Long. Он будет возвращен как список.

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

В интерфейсе картографа вы должны ожидать, чтобы получить обратно список Long.

List<Long> getPrice(); 
0

Попробуйте использовать ниже фрагмент кода внутри resultmap для отображения столбца PRODUCT_PRICE -

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