[MyBatis] java.sql.SQLException: 부적합한 열 인덱스
MyBatis로 개발하던 중 얻었던 '부적합한 열 인덱스'(Invalid column index) 오류에 대해 정리해본다. TL;DR
Getter, Setter Java Bean으로부터 데이터를 가져오거나 반환할 때에는 Getter와 Setter를 이용합니다. MyBatis가 호출할 Getter 메소드와 Setter 메소드가 존재하는지 확인합니다. 따옴표 보통 SQL에서 문자열을 다룰 때에는 작은 따옴표를 사용합니다. 혹시라도 나도 모르게 아래와 같이 SQL을 작성한 것은 아닌지 확인합니다.
따옴표 안에 변수를 삽입하는 경우 문자열로 취급되기 때문에 열 인덱스에 문제가 생깁니다. 주석 가장 최근에 겪었던 문제입니다.
위와 같이 주석 안에 변수가 있는 경우 해당 변수 역시 MyBatis가 처리해야 하는 변수로 인식되어 열 인덱스에 문제가 생깁니다. 아마 따옴표와 유사한 원인일 것으로 생각됩니다. 만약 SQL Mapper XML에 주석을 입력해야 하는 경우 XML 문서에서는 주석(commet)를 작성할 수 있다. 여기에서는 주석을 작성하는 방법에 대해 설명한다. 주석을 작성하는 방법XML 문서에서 뭔가 메모를 남기고 싶을 때는 주석을 작성 할 수 있다. 구문은 다음과 같다.
주석은 주석은 XML 문서의 어디에든 작성할 수 있다.
샘플을 브라우저에 표시 해 보면 아래와 같이 표시된다. 단, XML 선언 이전에 작성할 수 없다. 또한 시작 태그와 종료 태그 안에 작성 할 수 없다. 다음은 XML 선언 이전에 작성을 해보자.
샘플을 브라우저에 표시해 보면 아래와 같이 에러가 표시된다. 그리고 주석 내용에 "--"를 작성 할 수 없습니다.
샘플을 브라우저에 표시해 보면 아래와 같이 에러가 표시된다. -- 여기까지 XML 문서에 주석을 작성하는 방법을 설명했다. |