반응형
trim 속성
속성 | 설명 |
prefix | 실행될 <trim> 구문 쿼리 가장 앞에 붙여준다 |
prefixOverrides | 실행될 <trim> 구문 쿼리 가장 앞에, 해당하는 문자들이 있는 경우 자동으로 지워준다 |
suffix | 실행될 구문 쿼리 가장 뒤에 붙여준다 |
suffixOverrides | 실행될 <trim> 구문 쿼리 가장 뒤에, 해당하는 문자들이 있는 경우 자동으로 지워준다 |
trim 문법
<select id="selectUsers" resultType="user">
SELECT * FROM user
WHERE id = #{id}
<trim prefix="AND (" prefixOverrides="OR" suffix=")">
<if test="userName != null">
OR user_name = #{userName}
</if>
<if test="userEmail != null">
OR user_email = #{userEmail}
</if>
</trim>
</select>
설명
- prefix : 구문 맨 앞에 AND ( 가 붙음
- prefixOverrides : trim 구문 안의 맨 처음 OR 로 시작할 경우 제거
- suffix : 구문 맨 뒤에 ) 가 붙음
실행 쿼리
1. userName 만 넘어온 경우
SELECT * FROM user
WHERE id = '2090'
AND (
user_name = 'haenny'
)
2. userEmail 만 넘어온 경우
SELECT * FROM user
WHERE id = '2090'
AND (
user_email = 'haenny@tistory.com'
)
3. 둘 다 넘어온 경우
SELECT * FROM user
WHERE id = '2090'
AND (
user_name = 'haenny'
OR user_email = 'haenny@tistory.com'
)
응용 예제 쿼리
prefix, suffixOverrides 사용
- 맨 앞에 'SET' 붙이고 맨 끝에 있는 콤마(,) 제거하는 경우
<update id="updateUser">
UPDATE user
<trim prefix="SET" suffixOverrides=",">
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="bio != null">bio=#{bio},</if>
</trim>
WHERE id=#{id}
</update>
prefix, prefixOverrides 사용
- 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우
<select id="selectInfo" resultType="user">
SELECT * FROM USER
<trim prefix="WHERE" prefixOverrides="AND |OR">
<if test="username != null">AND username=#{username}</if>
<if test="password != null">OR password=#{password}</if>
<if test="email != null">AND email=#{email}</if>
</trim>
</select>
prefix, prefixOverrides, suffixOverrides 사용
- 맨 앞에 'SET' 붙이고 맨 앞, 맨 끝에 있는 콤마(,)를 제거하기
<update id="updateTable">
UPDATE TABLE
<trim prefix="SET" prefixOverrides="," suffixOverrides="," >
<if test="aFlag != null">
, A_FLAG = #{aFlag}
</if>
<if test="bFlag != null">
, B_FLAG = #{bFlag}
</if>
<if test="cFlag != null">
, C_FLAG = #{cFlag} ,
</if>
</trim>
WHERE KEY = #{key}
</update>
prefix, prefixOverrides, suffix 사용
- 맨 앞에 'AND (' 붙이고 맨 앞 'OR' 제거하고 맨 끝에 ')' 붙이기
<select id="searchUser">
<trim prefix="AND (" prefixOverrides="OR" suffix=")">
<if test="searchCategory0 != null">
OR TT LIKE '%' || #{searchContent} || '%'
</if>
<if test="searchCategory1 != null">
OR DS LIKE '%' || #{searchContent} || '%'
</if>
<if test="searchCategory2 != null">
OR WRT_MPR_NM LIKE '%' || #{searchContent} || '%'
</if>
</trim>
</select>
728x90
반응형
'Database > MyBatis' 카테고리의 다른 글
[MyBatis] SpringBoot MyBatis 쿼리 로그 설정하기 (0) | 2022.10.24 |
---|---|
[MyBatis] 중복 쿼리 줄여주는 sql, include, property 태그 문법 살펴보기 (3) | 2022.07.12 |
[MyBatis] For input string: "문자" 오류 해결방법 (1) | 2021.08.27 |
[MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE) - MySQL (0) | 2020.09.15 |
[MyBatis] #{ } 과 ${ } 차이 (0) | 2020.09.04 |
댓글