Oracle) NVL(), NVL2() 를 이용한 MyBatis Null 체크 조건문 대체

이지우·2022년 11월 27일
0
  • 그동안 Mybatis) IF 태그나 CHOOSE - WHEN 태그 또는 Oracle) CASE WHEN THEN ELSE END를 이용해 변수의 Null 여부 체크를 하였는데
    이럴 필요 없이 NVL, NVL2 함수를 이용하면 직관적으로 이를 대체할 수 있음을 깨달았다.
    selectKey의 keyProperty 변수를 이용해 Null 체크를 해야한다거나 하는, MyBatis 조건문 태그를 사용할 수 없는 경우에 유용할 것 같다.

    http://www.gurubee.net/article/66445

    UPDATE tbl_people 
    		SET 
    		    repMovieList = #{repMovieList}, 
    		    repMovieListDate = NVL2(#{repMovieList}, SYSDATE, NULL)
    <!-- 	    	<if test="repMovieList != null">문법에러 발생 -->
    <!-- 	    	<if test="#{repMovieList} != null">에러발생하지 않으나 원하는결과x.문법오류같음 -->
    <!-- 	    	<if test="#{repMovieList != null} ">에러발생하지 않으나 원하는결과x.문법오류같음 -->
    <!-- 	    		repMovieListDate = SYSDATE -->
    <!-- 	    	</if> -->
    		    
    	<!-- 	    repMovieListDate = #{repMovieListDate} -->
    		WHERE peopleCd = #{peopleCd}    
    • 유의) 대부분의 경우엔 Null 체크와 ''빈값 여부를 함께 체크하므로 이땐 조건문을 이용할 수 밖에 없겠다.
profile
IT개발 입문합니다.

0개의 댓글