2017-02-06 70 views
1

MyBatis XML映射器的以下代碼應將列'值'聚合到相應的數組中。MyBatis集合到數組類型

<resultMap id="cubeTextsHana" type="com.myDao"> 
    <id property="attribute" column="attribute" javaType="String" /> 
    <collection property="valueList" ofType="java.lang.String" javaType="String[]"> 
     <result column="value" /> 
    </collection> 

不幸的是,這是行不通的,因爲MyBatis的規定Class/TypeAlias 'String[]' not found.。當我更改javaType="list"和DAO中的對應類型時,它工作正常。

有沒有辦法使用<collection>與簡單的數組類型(例如字符串)而不是集合類型?發生在類

回答

1

結果映射收集處理org.apache.ibatis.executor.resultset.DefaultResultSetHandler

Java數組不是集合(instantiateCollectionPropertyIfAppropriate(ResultMapping,元對象)) 然後沒有方法加(linkObjects(MetaObject,ResultMapping,Object)

使用集合類型,在目標屬性中設置集合的新實例,然後將所有結果添加到集合類型中。 Property指向Collection,有時(在ArrayList的情況下)擴展它的內部數組,實際上覆制到一個更大的數組。雖然java數組是直接設置和指向的,但每個新元素都是數組需要重新定義數組和重置屬性。

所以,我認爲結果地圖收集通過Java數組支持不落實,將需要徵收管理機制實現部分(這將是點?)

我想你可以映射結果列表,並在需要時請致電收藏#toArray()