<if test="cond_alarm_type_cd_list != null and cond_alarm_type_cd_list != ''">
and C.alarm_type_cd in
<foreach collection="cond_alarm_type_cd_list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
-> cond_alarm_type_cd_list =[]이면 아래와 같이 잘못된 query생성됨
SELECT
FPS.PLT_SCHEDULE_ID AS "PLT_SCHEDULE_ID",
FPS.PLT_SCHEDULE_NM AS "PLT_SCHEDULE_NM",
FPS.PLT_CD AS "PLT_CD",
FPS.ROOM_ID AS "ROOM_ID",
FPS.DSC AS "DSC",
CASE WHEN FPS.ALL_DAY_YN = 'Y' THEN true WHEN FPS.ALL_DAY_YN = 'N' THEN false ELSE NULL END AS "ALL_DAY_YN",
FPS.START_DT AS "START_DT",
CASE WHEN FPS.ALL_DAY_YN = 'Y' THEN '종일' WHEN FPS.ALL_DAY_YN = 'N' THEN TO_CHAR(FPS.START_DT, 'HH24:mi') ELSE NULL END AS "START_TIME",
FPS.END_DT AS "END_DT",
FPS.REMARK AS "REMARK"
FROM
FARM_PLT_SCHEDULE FPS
WHERE
FPS.USE_YN = 'Y'
AND FPS.PLT_CD IN
AND FPS.START_DT BETWEEN ? :: timestamp
AND ? :: timestamp + interval '1 day'
<if test="apiKeys.size() > 0">
<choose>
<when test="ids==null || ids.isEmpty()">
1 = 0 <!-- a test returning false, to adapt depending on you DB vendor -->
</when>
<otherwise>
id IN <foreach item="id" collection="ids" open="(" separator="," close=")">#{id}</foreach>
</otherwise>
</choose>
참고: https://stackoverflow.com/questions/42995592/how-can-i-skip-query-if-where-in-clause-is-empty-in-mybatis-3