-
Mybatis 동적 쿼리 사용 중 Parameter를 String으로 넘길때 발생하는 문제IT, 프로그래밍/Spring 2018. 8. 19. 18:12
Mybatis를 사용하다 보면 이런 에러를 자주 볼 수 있다.
ReflectionException: There is no getter for property named 'key' in 'class java.
lang.String'... 이 에러는 ParameterType을 String으로 설정할 때 주로 생기는 오류이다.
( 파라미터에 오타가 있을 경우에도 발생한다. 대소문자 구분 필수 )
동적 쿼리 if문은 Parameter Type 클래스의 getter를 호출하는 방식으로 값을 전달받는데,
String의 경우 getter가 정의되어 있지 않다. 그러므로 당연히 getter를 찾지 못한다고 빼액 거리는 것.
이것은 Long이나 Interger 타입으로 값을 넘기는 경우도 마찬가지다.
이 문제를 해결하는 방법
1. DTO를 만들어서 해결한다
2. map으로 포장하여 mapper에 전달한다
3. 임의 변수 value 사용
3번 방식의 경우 if문내에 사용하는 변수를 받아온 String 값 말고 value로 선언하면 문제없이 잘 사용할 수 있다.
기본 데이터 타입 (원시 타입) 이나 getter/setter가 있는 객체의 경우 모두 사용이 가능하다.
잘 정리되어 있는 링크 --> http://everydaycoding.tistory.com/category/Springframework
'IT, 프로그래밍 > Spring' 카테고리의 다른 글