[ERROR] org.apache.ibatis.type.TypeException

zizi·2023년 5월 19일

오류 정리

목록 보기
4/7
post-thumbnail

오류 상황

//mapper
	<select id="getUserInfo" parameterType="String" resultType="Board">
	SELECT 
		boardseq, memberid, membername, title, 
		to_char(regdate, 'YYYY-MM-DD HH24:MI:SS') as regdate
	FROM m_board
	WHERE memberid = #{memberid}
	ORDER BY boardseq DESC, regdate DESC
	</select>

다음과 같이 DB에 저장된 게시글을 memberid가 동일한지를 비교하여 select 하기 위한 코드를 작성했는데 오류가 발생했다.

오류 메시지

nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='memberid', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcType=null, expression='null'}. Cause: org.apache.ibatis.type.TypeException: 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

원인

이 에러는 MyBatis가 데이터베이스 열에 대한 매핑 문제로 인해 SQL 문을 실행하지 못할 때 발생한다.

이 에러의 메시지를 살펴보면, 'Could not set parameters for mapping'라는 메시지와 'Error setting null for parameter #2 with JdbcType OTHER'라는 메시지가 있다.
이것은 MyBatis가 인자 매핑에 문제가 있다는 것을 나타낸다.
MyBatis가 매핑한 두 번째 매개 변수에 null 값을 할당할 수 없으며, 이를 JDBC 유형 OTHER와 함께 사용할 수 없기 때문에 오류가 발생했다.

해결 방법

jdbcType을 varchar로 지정해주니 해결이 되었다.
#{memberid, jdbcType=VARCHAR}

	<select id="getUserInfo" parameterType="String" resultType="Board">
	SELECT 
		boardseq, memberid, membername, title, 
		to_char(regdate, 'YYYY-MM-DD HH24:MI:SS') as regdate
	FROM m_board
	WHERE memberid = #{memberid, jdbcType=VARCHAR}
	ORDER BY boardseq DESC, regdate DESC
	</select>
profile
좋았다면 추억이고 나빴다면 경험이다.🍀

0개의 댓글