SpringBoot

[MyBatis] mybatis02 Dynamic SQL

N'Che 2020. 5. 26. 14:52

Dynamic SQL

쿼리 내에 조건문을 사용하여 중복되는 쿼리들을 최소화할 수 있다.

 

trim 엘리먼트

여러 구문 중 하나만 실행할 수 있다.

 

update sql문

UPDATE tb_member
	SET
		m_id='',
		m_pw='',
		m_level='',
		m_name='',
		m_email=''

	WHERE m_id=''

trim 엘리먼트 사용시

<update id="modifyMember" parameterType="Member">
		UPDATE tb_member
		<trim prefix="SET" suffixOverrides=",">
			<if test="memberLevel != null and memberLevel !=''.toString()">m_level=#{memberLevel},</if>
			<if test="memberName != null and memberName !=''.toString()">m_name=#{memberName},</if>
			<if test="memberEmail != null and memberEmail !=''.toString()">m_email=#{memberEmail}</if>
		</trim>
		<where>
			<if test="memberId != null and memberId !=''.toString()">m_id=#{memberId}</if>
		</where>
	</update>

set 엘리먼트는 동적으로 SET 키워드를 붙히고 필요없는 콤마를 제거

prefix와 suffix (overrides) 키워드로 접두사와 접미사 관리가 쉬워짐