[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>
출처: https://dongram.tistory.com/11 [Dongram 개발]
'JAVA HTML JAVASCRIPT > 소오스' 카테고리의 다른 글
자바스크립트 정렬 함수, sort() (0) | 2020.08.10 |
---|---|
객체(Object) 와 배열(Array) (0) | 2020.08.10 |
XML 기본 구조 (요소, 속성, CDATA, 네임스페이스) (0) | 2020.08.04 |
MyBatis 반복문(foreach) (0) | 2020.08.03 |
toString이란? (0) | 2020.07.29 |