-
[MyBatis] 동적 쿼리 trim 문법 알아보기Back-End/Spring Legacy 2023. 4. 17. 08:41
<trim>은 하위에서 만들어지는 sql 문을 조사하여 앞 쪽에 추가적인 sql을 넣을 수 있다.
prefix, suffix, prefixOverrides, suffixOverrides 속성을 지정할 수 있다.
📑 prefix
실행될 쿼리의 <trim>문 안 쿼리 가장 앞에 붙여준다.
UPDATE board
<trim prefix="SET">
username=#{username},password=#{password}
</trim>📑 prefixOverrides
실행될 쿼리의 <trim>문 안 쿼리 가장 앞에 해당하는 문자들이 있으면 자동으로 지워준다.
SELECT * FROM board WHERE id = #{id}
<trim prefixOverrides="OR">
OR TT LIKE '%' || #{searchContent} || '%'
</if>📑 suffix
실행될 쿼리의 <trim>문 안 쿼리 가장 뒤에 붙여준다.
<trim suffix=")"></trim>
📑 suffixOverrides
실행될 쿼리의 <trim>문 안에 쿼리 가장 뒤에 해당하는 문자들이 있으면 자동으로 지워준다.
<trim suffixOverrides=","></trim>
📑 문법 예제
<select id="test" resultType="user"> SELECT * FROM user WHERE id = #{id} <trim prefix="AND (" prefixOverrides="OR" suffix=")"> <if test="para1 != null"> OR para1 = #{data1} </if> <if test="para2 != null"> OR para2 = #{data2} </if> </trim> </select>
📌 1. prefix를 사용했으므로 trim문 가장 앞에 " AND ( " 를 붙여준다.
📌 2. prefixOverrides를 사용했으므로 trim문 가장 앞에 "OR"이 있으면 이를 지워준다.
📌 3. suffix를 사용했으므로 trim문 가장 마지막에 ")"를 붙여준다.
만약 para1과 para2에 값이 들어올경우 아래와 같은 쿼리가 실행된다.
SELECT * FROM user
WHERE id ='119' AND para1 = 'java119' OR para2 = 'java119'반응형'Back-End > Spring Legacy' 카테고리의 다른 글
[Spring] MyBatis의 resultMap 살펴보기 (0) 2023.05.24 [6-ch21~22 Spring ] 파일 업로드 방식 ( 중복처리, 섬네일 ,, ) (0) 2023.05.10 [Spring] Log4j2 환경설정 , (+ log.info 에러 ) (0) 2023.04.04 [jsp] <%@ include%>와 jsp:include 차이 (0) 2022.11.30 [Spring MyBatis] selectKey 사용하기 (0) 2022.11.17