2015-01-09 42 views
0

我們使用在多個XML映射文件MyBatis的彈簧和MapperScannerConfigurer重用的結果映射

mybatis-spring = 1.1.1 

mybatis = 3.1.1 

spring = 3.2.0 

MapperScannerConfigurer - to scan mappers 

我們如何重用的結果映射在多個XML映射文件?

在此回答問題"Reusing MyBatis ResultMap in multiple mapper.xml"

解決方案是使用的MyBatis-config.xml的文件,並在文件中添加resultMap的細節(或導入所有映射文件,在該文件中)。

但我們沒有使用該文件,而是使用mybatis-spring的MapperScannerConfigurer。

那麼我們如何使用MapperScannerConfigurer實現相同的功能呢?

例如,我們有一個userMapper.xml。

<resultMap id="user" type="com.domain.ModelUser"> 
    <result>..</result> 
    ... 
    ... 
</resultMap> 

,我們需要在例如managerMapper.xml 使用這個結果映射,並需要重新使用「用戶」結果。

例如

<select id="getManager" resultMap="com.domain.ModelUser.user"> 
    select ....... 
</select> 

現在它拋出錯誤 java.lang.IllegalArgumentException異常:結果映射集合不包含對com.domain.ModelUser.user

價值截至目前它不知道如何以及在哪裏找到UserMapper.xml文件中的resultMap

任何幫助和指導它的地方將不勝感激。

謝謝你的時間和幫助。

回答

0

即使使用Spring和MapperScanner,仍然可以使用mybatis-config.xml。此xml文件不是必須是基本MyBatis的完整(或有效)配置。只需創建一個簡單的配置是這樣的:

<config> 
    <mapper namespace="foo"> 
     <resultMap id="user" type="com.domain.ModelUser"> 
     <result>..</result> 
     ... 
     ... 
     </resultMap> 
    </mapper> 
</config> 

參考該文件與SqlSessionFactoryBean.setConfigLocation()。它將在SqlSessionFactory創建時加載,並且可以使用提供的名稱空間進行訪問。

+0

對不起,我遲到更新:如下圖所示在getManager查詢中使用resultMapid。謝謝AngerClown爲您提供幫助和時間,當我嘗試這樣做時(添加mybatis-config.xml文件),該應用程序拋出了其他映射文件的其他錯誤 - 可能現在它具有配置文件並且丟失了配置文件MapperScannerConfigurer選項?但我確實發現這一點在類=「org.mybatis.spring.SqlSessionFactoryBean」bean中使用屬性,並使用resultType =「User」工作,所以我只是這樣做,並沒有繼續調試配置文件選項 – Fossil 2015-01-22 16:24:40

0

我知道這是晚了,但我也在我的項目中得到類似的異常。

<select id="getManager" resultMap="user"> 
    select ....... 
</select>