MyBatis를 사용하면서 '부적합한 열 유형 1111' 이라는 오류가 발생하는 일이 있었다.
위 오류의 원인은 다음과 같다.
1. 테이블 컬럼의 데이터 타입과 대입하는 데이터 타입이 다를 경우
2. Map 또는 VO 객체를 parameterType으로 했을 때, 컬럼에 대입되는 특정 값이 null일 경우
1번의 경우, 데이터베이스와 MyBatis로 데이터를 넘기는 객체의 데이터 타입을 일치시키면 된다.
2번의 경우, MyBatis의 옵션을 설정하는 configuration.xml 파일에서 setting에 jdbcTypeForNull의 값을 NULL로 설정하면 된다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<typeAlias type="kr.or.ddit.vo.BookVO" alias="bookVO" />
</typeAliases>
</configuration>
매퍼 xml 파일에서 parameterType의 데이터를 SQL에 대입하는 구문에 jdbcType=VARCHAR를 명시하여 해결하는 것도 가능하다.
#{content, jdbcType=VARCHAR}
위와 같이 설정한 후 테스트해보면 null값이 데이터베이스에도 null로 삽입되는 것을 확인할 수 있다.
'웹 개발 > 오류' 카테고리의 다른 글
Not supported for DML operations (0) | 2023.04.17 |
---|---|
Spring Boot와 MariaDB 연동 후 java.util.concurrentmodificationexception: null (0) | 2023.03.27 |
Type [java.lang.String] is not valid for option items (0) | 2023.02.10 |
Spring - 요청 데이터로 JSON을 보냈을 때 상태코드 415 (0) | 2023.02.02 |
Spring - MultipartFilter 설정 후 한글이 깨지는 현상 (0) | 2023.01.30 |