본문 바로가기

Servlet&JSP

MyBatis 사용시 null parameter 에러 발생시 처리

반응형

MyBatis를 이용해 데이터를 삽입할 때 null parameter에 대해 아래와 같은 에러 메시지가 만들어지고 데이터베이스에 저장되지 않는 현상이 일어날 때 처리 방법

 

Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 부적합한 열 유형

 

<insert id="insertBoard" parameterType="Board">
    INSERT INTO board (
       seq, 
       writer, 
       title, 
       content, 
       passwd, 
       regdate,
       filename )
    VALUES (
     board_seq.nextval, 
     #{writer}, 
     #{title}, 
     #{content}, 
     #{pwd}, 
     sysdate,
     #{filename,jdbcType=VARCHAR}) <- null을 허용하려면 jdbcType=VARCHAR 추가

                                                      ( date 타입일 경우 jdbcType=DATE

                                                        number 타입일 경우는 jdbcType=INTEGER 설정)

  </insert>


* 자바빈으로 데이터 전달시 데이터를 미입력하면 number 타입의 경우 null로 처리되지 않고 0이 입력되기

때문에  jdbcType=INTEGER를 명시하지 않아도 오류가 발생하지 않는다. 만약 데이터를 Map의 형태로 

전달할 경우는 데이터 미입력시 0이 입력되지 않고 null로 처리되기 때문에  jdbcType=INTEGER를 입력하지

않으면 오류 발생


반응형