광고 한 번씩 클릭해 주시면 글 쓰는데 큰 힘이 됩니다 (제발~)

IT/Java

The error occurred while applying a parameter map

ThinkTheStory 2021. 5. 17. 11:20
728x90

ibatis는 쿼리를 최초 쿼리를 조회 한후 조회 결과의 메타(Meta Data- 컬럼리스트, 테이블명)를 캐쉬에 저장하여 놓아 다음 동일 쿼리 호출시 해당 컬럼으로 데이타 결과를 보여 주어 성능 향상을 꾀하고 있다. 그러나 동적쿼리 사용시 문제가 발생 할 수 있다.

 

예) 정적: select a, b, c from 테이블명;

     동적: select $컬럼목록변수$ from 테이블명;

 

위의 예문에서 정적쿼리로 컬럼명이 a, b, c 같이 고정 되어 있을 경우는 잇점이되나

$컬럼목록변수$ 와 같이 테이블 컬럼이 변경 될 수 있을 경우는 최초 조회결과의 컬럼명이 캐쉬에 저장된다. 따라서 $컬럼목록변수$ -> 'a, b, c' 컬럼을 지정하여 결과를 얻은 후

 $컬럼목록변수$ -> 'd, e, f'로 변수값을 변경하면 최초 'a, b, c'  메타 캐쉬로 저장 되어 있기 때문에 'd, e, f' 컬럼들을 찾을 수 없다는 아래와 같은 오류가 발생한다.

 

320x100

 

--- The error occurred while applying a parameter map.
--- Check the queryMap.inserTest-InlineParameterMap.
--- Check the parameter mapping for the 'keyCode' property.

 

이럴때 메타데이터를 캐쉬에 저장 하지 말고 항상 쿼리조회시 컬럼을 맵핑하여 가져 오게 할 수 있는데 remapResults = true로 지정하여 주면 된다.

 

remapResults = true를 정적쿼리에 사용해도 되나 매번 매핑을 사용 하므로 메타데이터를 캐쉬에 저장 할 때 보다는 성능이 약간 저하 될 수 있다.

 

 

출처 : http://www.jlancer.net/board/article_view.jsp?article_no=1156&board_no=8&table_cd=EPAR01&table_no=01

320x100

'IT > Java' 카테고리의 다른 글

ibatis parameterClass가 String일 경우  (0) 2021.05.17
텍스트 포멧 코딩~  (0) 2021.05.17
파일 읽어들일때 라인넘버 추가하는법~  (0) 2021.05.17
jstl fmt 관련~  (0) 2021.05.17
classes에서 properties 파일 읽어오기  (0) 2021.05.17