본문 바로가기
스프링 웹 개발

[mybatis] There is no getter for property named : 파라미터 하나 일때 에러

by 배추잠자리 2021. 6. 3.
반응형
org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'param' in 'class java.lang.String'

mybaits 에러

 

분명히 파라미터를 잘 넘겨주었고 마이바티스에서도 잘 받았는데도 불구하고... 황당한 에러가 뜨는 경우가 있다.

마이바티스에서 parameterType을 String 으로 하고,
if문을 통해 null체크를 했을 경우 나타나는 현상이다.

동적 쿼리에서 if문은 파라미터 타입 클래스의 getter를
호출하는 방식인데,
String 내부에는 getter 개념이 정의되어있지 않기 때문이다.

 

 

 

▶ 에러가 발생하는 마이바티스 쿼리

 

에러 발생하는 쿼리

파라미터타입이 String 이면서 넘어온 파라미터명 testId를 동적if문에 받을경우 에러가 발생하게 된다.

 

 

 

 

▶ 해결방법

동적if문 제거

필수값을 단일로 보내는 것이라면 동적 if문을 제거해주자.

 

 

map으로 넘겨주기

map으로 받아서 mybatis에 넘겨주면 이또한 가능하다 !

 

value로 받기

parameter를 testId로 보냈어도 마이바티스에서 단일값일 경우 임의로 value 로 받아주면 처리가 가능하다.

 

 

 

반응형

댓글