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 |
댓글