背景: 在数据过滤时,多数据关联后,一般数据id有着辨别数据来源举足轻重的地位,因此一般会在数据中体现.但是在xml映射时或有注意不到
id重复的情况,最终应该出现比如6条数据,但是却只出现了2条,为了解决此类问题,特此纪要!
问题:
Mybatis一对多xml关联映射时应该返回N条数据,但是数据返回缺失...
问题原因:
Mybatis一对多xml关联映射查询时不同数据的主键id不能重复
解决办法:
重起别名.
<!-- Xml -->
<resultMap id="comparisonMap" type="com.*.PcmCustomerConfig">
<id column="ID" property="id" />
<result column="CC_CODE" property="ccCode" />
<!-- ..... -->
<collection property="pcmCustomerConfigD" javaType="java.util.List" ofType="com.*.PcmCustomerConfigD">
<id column="CONFIGD_ID" property="id" />
<result column="CC_ID" property="ccId" />
<!-- ..... -->
</collection>
</resultMap>
<select id="getConstomerConfigData" resultMap="comparisonMap">
SELECT CONFIG.*,
CONFINGD.ID AS CONFIGD_ID,
CONFINGD.*
FROM NDRP_PCM_CUSTOMER_CONFIG CONFIG, NDRP_PCM_CUSTOMER_CONFIG_D CONFINGD
WHERE CONFIG.ID = CONFINGD.CC_ID
<!-- 部件节点编号:MODULE_CODE -->
<if test="moduleCode != null and moduleCode != ''">
and MODULE_CODE = #{moduleCode}
</if>
<!-- MODULE_VERSION -->
<if test="moduleVersion != null and moduleVersion != ''">
and MODULE_VERSION = #{moduleVersion}
</if>
<!-- globalId:PARAMETER_ID -->
<if test="parameterId != null and parameterId != ''">
and PARAMETER_ID = #{parameterId}
</if>
</select>