티스토리 뷰

프로그램/JAVA

Mybatis not support overload

길나미 2017. 1. 13. 13:25

개발을 하다보면 이런경우가 많이 생긴다.


동일한 데이터를 가지고 오지만 조회하고자 하는 컬럼에 따라 where 구문만 다르게 하고 싶을때. 


예를들면 


SELECT name, id FROM user Where name = ?

SELECT name, id FROM user Where id = ?


각 동일한 select 구절이지만 Where 조건이 다르다. 

이럴때 overload를 사용하면 되겠지라고 간단하게 생각했다가 낭패가 생겼다. 


<select id="userList" resultMap="userMap">
SELECT  name, id FROM user
<if test="name != null ">
WHERE name = #{name}
</if>
<if test="id != null ">
WHERE id = #{id}
</if>

다음과 같은 오류를 확인할 수 있다.


org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. 

Available parameters are [param1, name]



같은 쿼리를 반복해서 작성하고싶지 않아 Overloading을 지원안하는지 찾아봤더니 .


https://github.com/mybatis/mybatis-3/issues/511


여기에서 현재버전 mybatis는 오버로딩을 지원안한다는 답변을 확인할수 있었다. 


오.. 주여. 

다른 방법을 찾아봐야겠다.

댓글