mybatis 3.2.8 动态SQLbug
<select id="queryStudyCourseList" resultType="cn.resource.study.model.StuCourseDTO">
SELECT stuCid, stuId, stuName, stuNo, pubId, title, totalHours, images, subId
FROM study_course WHERE isDeleted=0
<if test="schoolId != null">
AND schoolId=#{schoolId}
</if>
<if test="expiredDate != null">
AND expiredDate <![CDATA[ > ]]> #{expiredDate}
</if>
<if test="pubId != null">
AND pubId=#{pubId}
<if test="stuName != null and stuName != ''">
AND stuName LIKE CONCAT('%', #{stuName},'%')
</if>
</if>
<if test="stuIdList != null and stuIdList.size > 0">
AND stuId IN
<foreach collection="stuIdList" item="stuId" open="(" separator="," close=")">
#{stuId}
</foreach>
</if>
<if test="courseIdList != null and courseIdList.size > 0">
AND pubId IN
<foreach collection="courseIdList" item="courseId" open="(" separator="," close=")">
#{courseId}
</foreach>
</if>
<if test="stuId != null">
AND stuId=#{stuId}
</if>
ORDER BY stuCid DESC
</select>
如上SQL中,因为item的值为stuId,在stuIdList不为空,但是stuId为null的情况下 stuId != null 会成立,此时stuId为stuIdList的最后一个元素
此问题出现版本mybatis 3.2.8,高版本中已修复此bug