场景:group表有数据 user表没有数据 xml的sql语句 <select id="getUserByGroupIds" resultType="java.util.Map"> SELECT user.user_id AS userId, user.user_name AS userName FROM custom_group group LEFT JOIN custom_group_user user ON group.id = user.group_id WHERE group.tenant_id = #{tenantId} AND group.record_status = 0 <if test="groupIds != null and groupIds.length > 0"> AND group.id in <foreach collection="groupIds" open="(" close=")" separator="," item="i"> #{i} </foreach> </if> </select>
出现的问题:列表中有一个null
这是什么原因呢?捉急啊,找了好几个帖子都不行,最后仔细分析SQL才发现原来是连接用反了,哎哎哎
修改后如下:
<select id="getUserByGroupIds" resultType="java.util.Map">
SELECT
user.user_id AS userId,
user.user_name AS userNameFROM
custom_group groupRIGHT JOIN custom_group_user user ON group.id = user.group_id
WHERE
group.tenant_id = #{tenantId}
AND group.record_status = 0<if test="groupIds != null and groupIds.length > 0">
AND group.id in
<foreach collection="groupIds" open="(" close=")" separator="," item="i">
#{i}
</foreach>
</if>
</select>