마이바티스 foreach문 사용시 alias 0 4 2,846

by 밍밍밍밍 [Oracle 기초] 오라클 11g 마이바티스 [2023.11.03 17:36:15]


안녕하세요.

마이바티tm 사용시 foreach문안에 alias를 지정을 할수있나요?

아래 주석된것처럼 개별로 사용시 AS ~로 지정이 가능한데

foreach안에서도 사용할수 있는방법이 있을까요?

 

SELECT 
		    area
		     <foreach collection="yearRange" item="year"  open="," close="" separator=",">
		     	SUM(CASE WHEN 등록연도 = #{year} THEN 횟수 ELSE 0 END)
		     </foreach>


		     <!-- , SUM(CASE WHEN 등록연도 = '2000' THEN 횟수 ELSE 0 END) AS y2000
		     , SUM(CASE WHEN 등록연도 = '2001' THEN 횟수 ELSE 0 END) AS y2001
		     , SUM(CASE WHEN 등록연도 = '2002' THEN 횟수 ELSE 0 END) AS y2002
-->

 

by 우주민 [2023.11.03 17:50:37]
             <foreach collection="yearRange" item="year"  open="," close="" separator=",">
                SUM(CASE WHEN 등록연도 = #{year} THEN 횟수 ELSE 0 END) as y#{year} 
             </foreach>

마이바티스를 사용해보지 않아서 잘은 모르겠지만 아마 item에 기술한 변수가 #{} 으로 들어가는 것 같은데...

그렇다면 as 이후 문장을 추가로 만들면 가능하지 않을까요?


by 밍밍밍밍 [2023.11.03 17:55:43]

알려주신 방법도 해봤는데 문법에러인지 로그가 아래처럼 찍히더라구요..

Error Msg = ORA-00923: FROM 키워드가 필요한 위치에 없습니다.


by 우주민 [2023.11.03 18:17:03]
<foreach collection="yearRange" item="year"  open="," close="" separator=",">
   SUM(CASE WHEN 등록연도 = #{year} THEN 횟수 ELSE 0 END) as y${year} 
</foreach>

# 을 이용하면 '(따옴표) 가 자동으로 붙는다고 합니다.

$ 를 사용하면 원 텍스트가 붙는다고 하네요.


by 밍밍밍밍 [2023.11.03 18:58:18]

답변감사합니다 이렇게 작성하니 잘나오네요!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입