原<resultmap>
<!-- dynamicTagTarget -->
<resultMap id="dynamicTagTarget1" type="adScheduleSwDesktopShowPaginationVo" autoMapping="true">
<id column="aid" property="aid" jdbcType="BIGINT" />
<association column="aid" property="strategy" resultMap="com.xxxx.xxxx.xxxx.definedMapper.strategyMap"/>
</resultMap>
会造成直接使用sql查询得出多条记录,但是映射出来只有1条记录,原因是因为id=aid 默认成主键,根据主线自动进行去重,所以对于1对多会造成数据缺失,因此再加一个决定id就行。
改<resultmap>
<!-- dynamicTagTarget -->
<resultMap id="dynamicTagTarget1" type="adScheduleSwDesktopShowPaginationVo" autoMapping="true">
<id column="aid" property="aid" jdbcType="BIGINT" />
<id column="day" property="day" jdbcType="DATE" />
<association column="aid" property="strategy" resultMap="com.xxxx.xxxx.xxxx.definedMapper.strategyMap"/>
</resultMap>
加入day这个id后,mybatis会根据aid和day进行去重,数据就不会缺失了。
另:映射需要将所有用到该字段的resultmap都写明,不然会造成对应字段的数据没映射出来。