<trim>

속성


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> 문 안에 쿼리 가장 뒤에 붙여준다.

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. <trim prefix="AND (" prefixOverrides="OR" suffix=")"> 이 부분을 해석하자면

2. 먼저 prefix 속성이 'AND'로 돼있기 때문에 맨 앞에 'AND'가 붙습니다.

3. prefixOverrides 속성이 쿼리 중에 'OR' 텍스트를 찾고, 찾게 되면 'OR' 텍스트를 제거합니다.

4. 그리고 suffix 속성이 <trim> 문 맨 마지막에 ')'를 닫아줍니다.

실행될 쿼리 (para1, para2 값이 들어올 경우)

SELECT * FROM user WHERE id = '119'
AND para1 = 'java119' OR para2 = 'java119'

실전 예제

prefix, suffixOverrides 사용 예시

1. 맨 앞에 '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 사용

2. 맨 앞에 있는 연산자를(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 사용

3. 맨 앞에 '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 사용

4. 맨 앞에 '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>

'DB' 카테고리의 다른 글

오라클 EXISTS  (0) 2022.10.24
테이블 컬럼 카멜 표기법 변환기  (0) 2022.10.24
PL/SQL에 Excel Import  (0) 2022.10.24
ResultHandler  (0) 2022.10.24
Merge Into 사용법, 예제  (0) 2022.10.24

+ Recent posts