mybatis update 사용시 모두 <if test="">를 사용해야할 경우

반응형
728x90
반응형

trim 사용하는 방법

<update id="updateExam" parameterType="VO">
   UPDATE examTable
   <trim prefix="SET" suffixOverrides=",">
      <if test="exam1 != null">exam1 = #{exam1},</if>
      <if test="exam2 != null">exam2 = #{exam2},</if>
   </trim>
   WHERE
      idx = #{idx}
</update>

 

mybatis에서 update 쿼리문을 사용하다보면 위처럼 조건문만 사용하게 되는 경우가 생긴다. 그때 콤마(,) 를 어떻게 사용해야 sql문 error가 발생하지 않을지 고민하게 된다. 그럴때는 위 예제처럼 trim 이라는것을 사용하자. 

 

+댓글내용 참고 (gyeongtae kim님)

- prifix = tirm 안에있는 모든 문자열의 앞에 붙여줄 문자열을 입력하는 곳
- suffixOverrides = trim 안에있는 모든 문자열의 조건문을 판별해서 입력된 문자열의 맨 끝에서부터 찾아서 지워줄 문자열을 입력하는 곳

 

 

 

Oracle 에서 NVL 함수 사용하는 방법

오라클에서 NVL 함수를 사용해서 처리해보자.

<update id="updateExam" parameterType="VO">
   UPDATE examTable
     exam1 = NVL(#{exam1}, exam1)
     exam2 = NVL(#{exam2}, exam2)
   WHERE
      idx = #{idx}
</update>

 

NVL 함수를 사용하면 된다. NVL 함수를 사용하여 파라미터 값이 null인 경우 기존 컬럼 값으로 UPDATE 하므로 동적 쿼리가 아닌 오라클 함수를 사용하여 처리할 수 있다.

 

NVL 함수 포스팅 바로가기

https://devfunny.tistory.com/16

 

NULL인 경우 값 변환 (NVL, NULLIF, COALESCE 함수)

NULL 변환 함수 1. NVL 함수 NULL 값을 다른 값으로 변환할때 사용하며, 모든 데이터 타입에 사용할 수 있다. SELECT NVL(col1, 0) FROM exam exam 테이블의 컬럼 col1이 null이라면, 0을 출력한다. 2. NULLIF 함..

devfunny.tistory.com

 

 

 

MySql에서 IFNULL 함수 사용하는 방법

<update id="updateExam" parameterType="VO">
   UPDATE examTable
     exam1 = IFNULL(#{exam1}, exam1)
     exam2 = IFNULL(#{exam2}, exam2)
   WHERE
      idx = #{idx}
</update>

 

Mysql 에서는 오라클의 NVL 함수와 동일하게 수행되는 IFNULL 함수가 있다.

 

IFNULL 함수 포스팅 바로가기

https://devfunny.tistory.com/193

 

MYSQL IFNULL 함수

IFNULL 함수 IFNULL((SELECT col1 FROM test WHERE idx = 1), '테스트 완료') IFNULL 함수(조건1, 조건2) - 조건 1의 값이 NULL 이면 조건 2를 출력 - 조건 1의 값이 NULL이 아니면 조건 1의 값을 출력

devfunny.tistory.com

 

 

 

 

 

 

반응형

Designed by JB FACTORY