ibatis 검색용 공용 메소드 만들기
프로그래밍/iBatis 2009. 12. 16. 14:30ibatis 를 사용하던중 모든 테이블에 대해서 공용으로 사용할 수 있는 select 구문을 만들 수 있을까? 하고 생각해 보았다.
해답은 매뉴얼 상에 있었으며 매뉴얼 상에 나와있는 dynamic 예문을 활용하여 만들어 보았다.
<select id="cm-get-field" resultClass="java.lang.Object" parameterClass="examples.beans.SearchParameter"> SELECT $fieldName$ as value FROM $tableName$ <dynamic prepend="WHERE"> <iterate property="conditions" conjunction="and" open="(" close=")"> $conditions[].name$ #conditions[].value# </iterate> </dynamic> </select>
우선 공통적으로 사용할 검색용 객체, SearchParameter 객체를 만들었다. SearchParameter 는 검색 결과를 원하는 fieldName , tableName 그리고 검색조건을 나타내는 SearchCondition 배열을 갖게 된다.
위 iterate 구문에서 나오는 conditions property 를 통해서 SearchCondition 배열이 사용된다.( [] postfix 를 사용하기 위해서는 conditions property 로 리턴하는 객체는 Collection의 하위 객체이어야 한다. 예) ArrayList, Array...)
iterate 구문은 자동으로 해당 conditions property 에서 리턴된 객체를 반복적으로 수행해준다.
만약 두개의 SearchCondition 이 ["com_id =", "1"],["com_name =", "samsong"] 으로 설정되어 있다면 자동으로 com_id = '1' and com_name = "samsong" 으로 변환해 준다. 따라서 SearchCondition 의 내용에 따라서 동적으로 where 절을 설정할 수 있다.
뭐 아직까지는 불완전하지만 이정도면 그나마 편하게 사용할 수 있지 않을까 생각해본다...
'프로그래밍 > iBatis' 카테고리의 다른 글
ibatis 동적 Select 필드 구성시 (0) | 2015.02.11 |
---|---|
ibatis 1:N 관계에 대한 처리 (0) | 2009.12.15 |
ibatis 에서 모든 테이블에 적용되는 쿼리 만들기 (Substitution Strings 사용) (2) | 2009.12.15 |
ibatis inline parameter (0) | 2009.12.15 |
ibatis cacheModel 테스트 (2) | 2009.12.13 |