如果需求中查询一对多,并且为分页查询,那么使用collection标签就会导致查出来的条数比实际多。这时候可以用collection中的select属性定义一个方法。例如:
<resultMap id="findByPageMap" type="com.hejia.asset.dto.AssetModelDTO">
<id column="MODEL_ID" property="modelId" javaType="java.lang.Integer"/>
<result column="WEIGHT" property="weight" javaType="java.lang.Integer"/>
<-- ofType代表 多 的数据类型,column代表两个表的关联字段 -->
<collection property="photoIds" ofType="java.lang.Integer" column="MODEL_ID"
select="com.hejia.asset.dao.AssetModelDao.findPhotoIdByModelId">
</collection>
</resultMap>
<select id="findByPage" resultMap="findByPageMap">
SELECT
am.MODEL_ID,
am.WEIGHT
FROM
t_asset_model am
</select>
<select id="findPhotoIdByModelId" resultType="java.lang.Integer">
select PHOTO_ID as photoId from t_asset_model_photo where MODEL_ID=#{modelId}
</select>