myBatis foreach와 list.size

<select id="selectAaboo" resultType="hashmap" parameterType="hashmap">
  SELECT name, age
  FROM AABOO
  WHERE age = #{age}
  <if test="jobList!=null and jobList.size!=0"> 
    AND job IN
    <foreach collection="jobList" item="item" index="index"  open="(" close=")" separator=",">
      #{item}
    </foreach>
  </if>
</select>

5번 라인 : jobList.size!=0
7번 라인 :
– collection : ArrayList 형
– item : ArrayList의 index 순서에 있는 데이터
– index : ArrayList의 순서(0부터 1씩 증가)
– open : foreach문으로 출력되는 모든 문자 결합 앞에 “(” 붙여준다.
– close : foreach문으로 출력되는 모든 문자 결합 앞에 “)” 붙여준다.
– separator : 출력할 때마다 “,” 문자를 붙여준다

또 다른 예시

<insert id="insertCfSettleHistory">
	INSERT INTO CF_SETTLEHISTORY
	(FEEMON, FICODE, BILL_ITM_GROUP, SUBMIT_CD, SUBMIT_SNO
	, ROWCODE, ROWNAME, COLCODE, COLNAME, BFDATA
	, AFDATA, MEMO, USERID, UPDATED, UPDATESTAMP)
	<foreach collection="param.historyList" item="item" index="index" separator="UNION ALL"> 
	SELECT
		#{param.feemon}, #{param.ficode}, null, #{item.pageID}, #{index}
		, #{item.row}, #{item.rowName}, #{item.col}, #{item.colName}, #{item.orgValue}
		, #{item.chgValue}, #{item.memo}, #{param.session.userid}, SYSDATE, SYSTIMESTAMP
	FROM DUAL
	</foreach>
</insert>

댓글 남기기