我正在將大的MyBatis2映射轉換爲MyBatis3映射,並且遇到了一些問題,我有一個resultMap
多個result
元素使用相同的property
屬性(並且該類是從我的控制之外的WSDL生成的):Mybatis2到MyBatis3的轉換 - 結果具有相同的屬性
<resultMap id="blah" class="someWsdlGeneratedClass">
<result property="addressLine"
resultMap="addressLineOneListMap"
javaType="java.util.List" />
<result property="addressLine"
resultMap="addressLineTwoListMap"
javaType="java.util.List" />
</resultMap>
<resultMap id="addressLineXListMap" class="string">
<!-- Result maps are the same except for column -->
<result property="addressLine" column="COLUMN_X" />
</resultMap>
注意這兩個屬性都是「addressLine」。
這適用於Mybatis2。但是,如果我嘗試使用MyBatis3同樣的模式,我得到一個IllegalArgumentException
:Result Maps collection already contains value for Mapper.mapper_resultMap[blah]_collection[addressLine]
<resultMap id="blah" type="someWsdlGeneratedClass">
<collection property="addressLine"
resultMap="addressLineOneListMap"
javaType="java.util.List" />
<collection property="addressLine"
resultMap="addressLineTwoListMap"
javaType="java.util.List" />
</resultMap>
我想避免的DTO對象寫入周圍生成類的包裝,如果可能的話,因爲這將導致項目中的重大重大工作。有什麼我可以添加在地圖本身?
我很困惑你的用例。 resultMap.result用於映射到單個屬性(例如,java類屬性或hashmap屬性)。這就是爲什麼它通過屬性名稱進行索引。你需要將兩次映射到同一個屬性的用例是什麼? – h3adache
我對繼承的代碼的理解是,dto和/或其他後臺代碼處理將各種元素放入同一個數組中。 –