반응형
나중에 내가 사용하기 위해 동적 쿼리 template을 기록한다.
<where>
<choose>
<!-- 회원구분 -->
<when test="mberGubun != null and mberGubun != ''">
<if test="mberGubun =='GNR'">
AND B.CODE IS NULL
</if>
<if test="mberGubun =='ENT'">
AND B.CODE IS NOT NULL
</if>
</when>
</choose>
<choose>
<!-- 가입상태 -->
<when test="mberSttus != null and mberSttus != ''">
<if test='mberSttus == "A"'>
AND C.CODE = 'A'
</if>
<if test='mberSttus == "D"'>
AND C.CODE = 'D'
</if>
<if test='mberSttus == "P"'>
AND C.CODE = 'P'
</if>
</when>
</choose>
<!-- 소속코드 -->
<if test="entrprsSeCd != null and entrprsSeCd != ''">
AND B.CODE = #{entrprsSeCd}
</if>
<!-- 연락처 -->
<if test="mbtlnum != null and mbtlnum != ''">
AND A.MBTLNUM LIKE '%' || #{mbtlnum} || '%'
</if>
<!-- 회원명 -->
<if test="mberNm != null and mberNm != ''">
AND A.MBER_NM LIKE '%' || #{mberNm} || '%'
</if>
</where>
위 동적쿼리는 이렇게 작동한다.
<where></where>를 통해 넘어온 parameter의 조건 일치여부에 따라 AND절을 동적으로 추가 또는 생성
예를 들면 다음과 같다.
1. mberGubun값만 'GNR'인 경우(일반회원만)
//SELECT 절 생략
WHERE B.CODE IS NULL(원래 있던 AND는 사라짐)
2. mberGubun값 'GNR'이면서 mberSttus이 'D'인 경우(일반회원 중 가입삭제인 경우만)
WHERE B.CODE IS NULL(역시 원래 있던 AND는 사라짐)
AND C.CODE = 'D'
3. mberGubun값 'GNR'이면서 mberSttus이 'D'인 경우이고 entrprsSeCd가 있는 경우(가입상태가 삭제인 일반회원 중 소속이 있는 경우)
WHERE B.CODE IS NULL(역시 원래 있던 AND는 사라짐)
AND C.CODE = 'D'
AND B.CODE = '003'
... 이하 생략
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
반응형
'IT > development' 카테고리의 다른 글
[IDE] IntelliJ jdk 버전 변경 (21) | 2023.12.30 |
---|---|
[IDE] IntelliJ tomcat 한글 깨짐 조치 (22) | 2023.12.30 |
[jstl] 검색 결과 유지 (feat. 목록 화면) (31) | 2023.12.24 |
[IDE] IntelliJ Spring MVC Project import (feat. maven) (24) | 2023.12.22 |
[jstl] selectbox 조건과 일치하면 선택값 유지(feat. 상세화면) (29) | 2023.12.22 |