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>
만약에 특정 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 |
참고문서
[1] "JdbcType", Mybatis 3 Reference. @원문보기
728x90
반응형
'[WEB] Back-End Framework & Library > MyBatis' 카테고리의 다른 글
[마이바티스] 변수를 정규식으로 한 번에 바꾸기 (0) | 2023.03.03 |
---|---|
마이바티스에서 프로시저를 호출하는 방법 (0) | 2022.11.08 |
댓글