본문 바로가기
[WEB] Back-End Framework & Library/MyBatis

[Spring/MyBatis] Null 값 허용하기

by 연구자 공학코드 2022. 8. 22.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

문제 정의 및 현상

MyBatis를 활용해서 개발을 하다보면 SQL(Structured Query Language) 실행 중에 아래와 같은 문구를 만날 때가 있다. 원인은 여러가지가 있겠지만 그 원인 중 하나가 SQL 내의 변수값에 NULL이 있는 경우를 본 글에서는 살펴본다.

JDBC-590704:Unsupported SQL type.

문제 현상 화면

위와 같은 문구가 발생하는 경우 사용하는 SQL 내 변수 값 중에 NULL이 있는지 확인해서 NULL이 있는데 아래와 같은 문구가 발생하면 본 글의 해결방법으로 해결이 가능할 확률이 높다.

전역으로 NULL 값 허용

SQL 변수 값에 NULL이 허용되도록 MyBatis 설정을 전역적(Global)으로 설정하는 방법은 아래의 문구를 MyBatis 설정에 입력하는 것이다.

<configuration>
	...
    <settings>
    	<setting name="jdbcTypeForNull" value="NULL" />
    </settings>
    ...
</configuration>

MyBatis 전역 NULL 허용

만약에 특정 SQL의 변수만을 지역적(Local)으로 NULL 허용하고 싶다면 다음의 방법을 사용할 수 있다. 

지역적(Local)으로 NULL 값 허용

아래와 같이 SQL에 변수의 형식을 명시적으로 입력함으로써 지역적으로 NULL 허용이 가능하다.

#{변수명, jdbcType=값형식}

지정할 수 있는 jdbcType은 아래의 표와 같다.

지정할 수 있는 값형식
ARRAY 
BIGINT 
BINARY 
BIT 
BLOB 
BOOLEAN 
CHAR 
CLOB 
CURSOR 
DATALINK 
DATE 
DATETIMEOFFSET 
DECIMAL 
DISTINCT 
DOUBLE 
FLOAT 
INTEGER 
JAVA_OBJECT 
LONGNVARCHAR 
LONGVARBINARY 
LONGVARCHAR 
NCHAR 
NCLOB 
NULL 
NUMERIC 
NVARCHAR 
OTHER 
REAL 
REF 
ROWID 
SMALLINT 
SQLXML 
STRUCT 
TIME 
TIMESTAMP 
TINYINT 
UNDEFINED 
VARBINARY 
VARCHAR 

 

MyBatis 지역적 NULL 허용

 

참고문서

[1] "JdbcType", Mybatis 3 Reference. @원문보기

 

728x90
반응형

댓글