[MyBatis] 동적 쿼리
쿼리를 짜다보면 동적 쿼리를 만들어야 할 때 가 있다. 싫다
마이바티스에서는 동적 쿼리를 처리하는 방법이 존재한다.
1. if 문
# keyword 가 null 이 아니면 AND KEYWORD LIKE #{keyword}
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE POIX = '100'
<if test="keyword != null">
AND KEYWORD LIKE #{keyword}
</if>
</select>
# if문 안에서 문자열 비교
# 파라미터.equals('keyword')# (파라미터 eq 'A'.toString())# 파라미터 == 'A'
<if test="keyword != null and keyword.equals('서울') ">
AND KEYWORD LIKE #{keyword}
</if>
2. choose, when, otherwise
# if - else 구문 처럼 쓸 수 있다
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE POIX = '100'
<choose>
<when test="keyword != null and keyword.equals('서울')">
AND KEYWORD LIKE #{keyword}
</when>
<when test="keyword != null and keyword.equals('부산')">
AND KEYWORD LIKE #{keyword}
</when>
<otherwise>
AND KEYWORD = '경기'
</otherwise>
</choose>
</select>
3. foreach
# 마이바티스는 반복문도 가능하다
#
foreach 를 사용하여 collection 에 대해 반복처리와 IN 조건에 사용한다
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE KEYWORD IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
'개발 티끌 팁' 카테고리의 다른 글
[vi] vi 에디터 자주쓰는 명령어 (0) | 2017.01.25 |
---|---|
[MyBatis] 동적 쿼리 LIKE 문 삽질 주의 (0) | 2017.01.16 |
[vi]vi 에디터 비정상 종료시 (0) | 2017.01.06 |
[명령어]리눅스 도움말, 디렉토리 관련 기본 명령어 (0) | 2017.01.04 |
jQuery 핸드폰 번호 입력시 하이푼(-) 자동으로 넣고 빼기 (0) | 2016.05.11 |