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를 입력하지
않으면 오류 발생
'Servlet&JSP' 카테고리의 다른 글
eclipse와 연동하는 svn의 repository 경로의 아이디 또는 비밀번호 변경 (0) | 2016.09.06 |
---|---|
myBatis insert문 사용시 동적 sql selectKey 사용하기 (0) | 2016.09.02 |
MyBatis 사용시 CLOB 데이터가 출력되지 않을 때 (0) | 2016.08.03 |
자카르타 DBCP API와 JNDI를 이용한 커넥션 풀 사용하기 (0) | 2016.08.02 |
JSP 새 글 작성시 new 표시하기 (0) | 2016.08.02 |