본문 바로가기
Spring Framework

[Spring Framework] Mybatis 쿼리 파라미터 null 처리

by byeongoo 2019. 12. 17.

아래와같이 값을 넣었을때 테이블에서는 NULL이 허용이 되도 NULL값 에러가 나타나는 경우가 있습니다. 

<!-- mybatis 방식 -->
<insert id="insertQuery">
    INSERT INTO table (id , name, title) VALUES (#{id}, #{name}, #{title})
</insert>
Caused by: org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. 
Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. 
Cause: java.sql.SQLException : 부적합한 열 유형: 1111

이럴 경우 항상 null을 체크하고 insert의 분기를 나누거나 "" 값을 넣어준다던가 하는것은 많은 리소스 낭비입니다.  다음과 같이 jdbcType을 지정해준다면 쿼리는 자연스럽게 null로 변경되어 INSERT 쿼리가 실행됩니다.

<!-- mybatis 방식 -->
<insert id="insertQuery">
    INSERT INTO table (id , name, title) VALUES (#{id, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{title, jdbcType=VARCHAR})
</insert>

쿼리마다 적당히 jdbcType을 지정해서 사용해봅시다.