본문 바로가기
스프링

Mybatis 주석으로 인한 오류

by PD su 2024. 1. 29.

스프링으로 백앤드를 구축 중에 일부 기능을 테스트하거나 변경하면서 잠깐 주석처리를 할 때가 종종 있는데

DB 연결 쪽에서 주석으로 인한 오류가 발생

 

아래는 오류 일부 발최

2023-11-16 13:55:40.299 ERROR [26300:http-nio-9082-exec-7] jdbc.audit [] 63. PreparedStatement.setString(2, "7661O4LVLAB8F3BC80") java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1). at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

 

 

오류 내용인즉슨 Parameter를 Mybatis가 매핑하려는데 준비한 파라미터는 더 많은데 삽입하여 실행할 쿼리 부분이 부족하다는 뜻이다.

 

기존 쿼리가 있는데 그 쿼리를 일부 수정할때 원본을 보존하기 위해서 주석으로 백업해두었는데 그 부분에서 발생한 오류

 

<select id="myBoardFiltered" parameterType="Map">
SELECT *
  FROM BOARD a
 WHERE 1=1
   AND a.user_id = #{userId}
   AND a.status = #{status}
</select>
<!--
<select id="myBoardFiltered" parameterType="Map">
SELECT *
  FROM BOARD a
 WHERE 1=1
   AND a.user_id = #{userId}
</select>
-->

 

예를 들어 위와 같은 경우 아래 주석의 #{userId}가 Mybatis 상에서는 변수로 잡히지만 실제 DB에 보낼 쿼리를 작성할때는 주석으로 제외되므로 발생하는 오류로 추정