2014-03-19 2 views
0

내 응용 프로그램에서 200 개 이전 레코드 중 20 개 레코드 만 가져와야합니다. 이전에 데이터베이스에서 모든 레코드를 가져오고 사용자가 페이지 번호를 입력하거나 탐색 탭 사용자를 클릭 할 때마다 첫 페이지에 처음 20 개의 레코드 만 표시했습니다. 다른 20 레코드를 얻을 수 있습니다.최대 절전 모드 페이지 구현

하지만 지금은 데이터베이스에서 처음 20 개 레코드를 가져와 총 레코드 수만 있으면 전체 레코드 수를 기준으로 페이지 번호를 표시 할 수 있습니다. 해당 페이지 수에 대한 사용자의 클릭 만 해당 기록은 내가이 질문

을 요구하고 내가 왜이 최대 절전 모드에 새로운 오전

가의 데이터베이스를 쳐서 가져되어 표시해야합니다 때마다

+1

이 답변이 귀하의 질문에 적용됩니다. http://stackoverflow.com/a/840108/355499 –

답변

3
매김은 다음과 같이 얻을 수있다

두 가지 방법, Query 인터페이스.

query.setFirstResult(2); 
    query.setMaxResults(4); 

setFirstResult (INT startingRecordsFrom) : 우리는 기록에서 시작 쿼리의 결과를 설정할 수 있습니다이 방법의 도움으로 .

setMaxResults (int maxRecords) : 이 메서드를 사용하면 쿼리에서 최대 결과를 설정할 수 있습니다.

100 개의 레코드가 있고 10 개의 레코드 만 검색한다고 가정 해 보겠습니다. 코드는해야 당신이 어딘가에 다음 페이지 요청에 대한 귀하의 프로그램에 updatedStartIndex 변수를 유지해야 다음은이

final int pageSize =10; 
    String hql = "FROM Employee"; 
    Query query = sess.createQuery(hql); 
    query.setFirstResult(updatedStartIndex); 
    query.setMaxResults(pageSize); 
    List<Employee> employees = query.list(); 
    updatedStartIndex = updatedStartIndex +pageSize; 

같은.

희망이 당신은 당신이 할 레코드 수를 볼 수도 수를 필요

0
getHibernateTemplate().execute(new HibernateCallback<List<YourObject>>() { 
    public List<YourObject> doInHibernate(Session session) throws HibernateException, SQLException { 
     return session.createCriteria(YourObject.class).setMaxResults(resultsPerPage).setFirstResult(offset).list(); 
    } 
}); 

도움이됩니다. 그 수를 resultPerPage로 나눠서 페이지 수를 얻습니다. 오프셋은 currentPage * resultPerPage - resultPerPage가 될 것입니다;

관련 문제