본문 바로가기

개발/JAVA

[SPRING] Mybatis에서 insert할 때 null 처리하기

반응형

스프링에서 마이바티스를 이용할 때 파라미터 값이 null인 경우 insert, update 할 때 에러가 발생한다.
이런 경우 null값으로 처리해줄 수 있는 방법이 있다.

insert, update 구문에 jdbcType 설정하기


예를 들어 EMP라는 테이블에 EMPNO, ENAME, JOB, SAL이라는 칼럼이 있다고 가정한다.
아래의 값을 EMP에 insert 하는 경우 sal의 값은 null이다.

int empno = 1; String ename = "WENDY"; Stirng job = "DBA" String sal;


Mapper XML 파일에서 위의 값을 insert하는 쿼리를 작성할 때 아래와 값이 null값이 들어오게 되는 파라미터 값에 데이터 타입을 명시하면 에러없이 실행된다.

<insert id="insertNull" parameterType="java.util.Map"> INSERT INTO EMP (empno, ename, job, sal) VALUES ( #{empno}, #{ename}, #{job}, #{sal, jdbcType = VARCHAR}) </insert>

 


 

Configuration XML에서 전체 설정하기


Configuration XML 파일에서 properties 설정보다 아래, typeAliases 설정보다 위에 아래와 같은 세팅값을 추가해준다.

<!-- 마이바티스 null값 insert 설정 --> <settings> <setting name="jdbcTypeForNull" value="VARCHAR"/> </settings>


개인적으로는 매번 jdbcType을 작성하는 게 번거로워서 두 번째 방법을 사용하고 있다.


반응형