collection 使用情景:
1对多情况. 例如:查询所有用户的朋友圈,与此同时查询出 每个朋友圈下的所有的点赞列表/ 图片列表 / 评论列表
全部的代码:
<resultMap id="queryCircleMoentResultMap" type="com.lxzh.smart.campus.association.serv.vo.CircleMomentDTO">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="termName" property="termName" />
<result column="avatar" property="avatar" />
<result column="content" property="content" />
<result column="create_time" property="createTime" />
<!-- 点赞 -->
<collection column="id"
property="likes"
javaType="java.util.List"
select="selectLikeById"/>
</resultMap>
<!-- 主体查询语句 -->
<select id="queryCircleMoent" resultMap="queryCircleMoentResultMap">
SELECT
a.id,
b.`name`,
b.term_name termName,
b.icon avatar,
a.content,
a.create_time
FROM
circle_moment a
LEFT JOIN `user` b ON a.`user` = b.id
WHERE a.circle_id = #{circleId}
<if test="search != null and search != ''">and a.content like concat('%',#{search},'%') </if>
</select>
<!-- 嵌套查询语句 -->
<select id="selectLikeById" resultType="com.lxzh.smart.campus.association.serv.vo.CircleMomentLikeVO" >
SELECT
a.id,
b.`name`,
b.icon avatar,
b.id userId
FROM
circle_moment_like a
LEFT JOIN `user` b ON a.user_id = b.id
WHERE
moment_id = #{id}
</select>