2010-07-14 8 views
2

내가 사용하는 iBatis를 2.3.4일반적으로 iBatis에서 mysql의 한계를 어떻게 사용할 수 있습니까?

나는 다음과 같은 쿼리가 :

<select id="getUserList" resultMap="userListResult"> 
    SELECT 
      id, 
      name, 
      login, 
      email 
    FROM 
      users 
</select> 

을 내가 페이징을 제공해야 할 때 내가 사용 :

sqlMap.queryForList("base.getUserList", startPosition, numItems); 

그리고 iBatis를가 제한없이 쿼리 생성 및 가져 오는 동안 여분의 데이터를 건너 뜁니다. 한계가있는 작업이 더 빠릅니다.

일반적으로 LIMIT을 사용하도록 iBatis를 푸시 할 수 있습니까? 그것은 가능합니까? 방언을 설명 할 수 있습니까?

답변

2

오프셋을 매개 변수로 전달할 때 잘못된 점은 무엇입니까?

<select id="getUserList" resultMap="userListResult"> 
    SELECT ... 
    FROM users 
    LIMIT #limit:INTEGER# OFFSET #offset:INTEGER# 
</select> 

이 그런 다음 DAO를 당신이 코드 수 : 예를 들어 (PostgreSQL을에, 나는 MySQL은 비슷한 생각)

Map params = new HashMap(); 
    params.put("limit",10); 
    params.put("offset",100); 
    res = sqlMap.queryForList("base.getUserList", params); 
표시하려는 경우,이 시나리오에 페이징을 구현하는 것이 어떻게
+0

및 페이지별로 검색 결과 만 표시합니까? – mico

+0

DAO는 한계/오프셋을 처리하는 방법을 알고 있습니다. 상위 계층은 iBatis와 아무 관련이없는 원하는대로 페이지 매김을 수행하도록 계산해야합니다. 예를 들어 http://stackoverflow.com/questions/5412059/how-to-implement-general-pagination을 참조하십시오. – leonbloy

+0

안녕하세요, 버전 2 또는 3 용입니까? 내 인라인 (#) 매개 변수는 항상? 이 코드와 함께. – zeratul021

관련 문제