티스토리 뷰

Spring mybatis 사용시 insert, update 할 때 null값이 들어가면 부적합한 열 유형 오류가 발생한다.

 Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111

< mapper.xml >

<insert id="exam" parameterType="DTO">
	insert into test
	values(#{id}, #{password}, #{name})
</insert>

- null 값을 허용하려면 매핑되는 값 뒤에 jdbcType = 타입 을 넣어주면 된다

- 가능한 타입

BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED
TINYINT REAL VARCHAR BINARY BLOB NVARCHAR
SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR
INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB
BIGINT DECIMAL TIME NULL CURSOR  

- 적용

<insert id="exam" parameterType="DTO">
	insert into test
	values(#{id, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR})
</insert>

 

- mybatis 설정 파일(xml)을 변경하면 한번에 해결할 수 있다.

- configuration 사이에 settings를 추가하면 된다.

<settings> 
    <setting name="cacheEnabled" value="false" />
    <setting name="jdbcTypeForNull" value="NULL" />
</settings>

- settings는 가장 위에 추가 해야 오류가 안난다.

<configuration>
  <settings> 
    <setting name="cacheEnabled" value="false" />
    <setting name="jdbcTypeForNull" value="NULL" />
  </settings>
  <typeAliases>
    <typeAlias type="kr.test.exam" alias="exam"/>
  </typeAliases>
  <mappers>
  	<mapper resource="test.xml"/>
  </mappers>
</configuration>

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함