Result Maps collection already contains value for com.eissmann.dao.Delivery.DeliveryMapper.DeliveryList
时间: 2024-10-13 21:02:26 浏览: 36
在MyBatis中,当试图在一个`resultMap`集合中添加同一种类型的映射时,如果已经存在相同的别名(`id`),会抛出如你所描述的错误信息:
`Result Maps collection already contains value for com.eissmann.dao.Delivery.DeliveryMapper.DeliveryList`
这是因为`resultMap`是基于类型和别名标识的,如果两次尝试添加了同样类型的`resultMap`并且指定了相同的别名,例如两个都是`Delivery`对象,那么MyBatis认为这是重复的,不允许。
解决这个问题的方式是为每个`resultMap`提供独特的别名。比如你可以为`Delivery`对象的`resultMap`改一个名字,或者为`OrderItem`的`resultMap`使用不同的名称,如下所示:
```xml
<!-- 修改Delivery的resultMap别名 -->
<resultMap type="Delivery" id="deliveryResultMap_1">
<result property="id" column="id"/>
<result property="deliveryCode" column="deliveryCode"/>
</resultMap>
<!-- 或者为OrderItem的resultMap提供一个新的别名 -->
<resultMap type="Delivery.OrderItem" id="orderItemResultMap_1">
<result property="id" column="order_item_id"/>
<result property="deliveryCode" column="delivery_code"/>
<result property="mtrlCode" column="material_code"/>
</resultMap>
```
确保给每个`resultMap`一个唯一的`id`属性值,这样就能避免冲突了。
阅读全文