문제

내 사이트의 모든 사용자 목록을 표시하고 싶지만 나이 당 10 명만 표시하고 싶습니다. 정확히 어떻게 해야하는지 모르겠습니다. 한 페이지에 모든 사용자를 표시하여 수행하는 방법을 알고 있지만별로 좋지는 않습니까?

내가 지금 가지고있는 코드로 그것을하면 처음 10 명의 사용자 만 계속해서 만 얻을 수 있습니다. 모든 사용자를 한 번 쿼리하고 전역으로 저장 한 다음 다음 10 등을 검색하는 목록을 통해 이동할 수 있기를 원합니다.

나는 Java와 Spring Framework를 사용하여 Appengine을 개발하고 있습니다.

  1. 세션에 저장하고 목록을 살펴보십시오 (매우 나쁘다고 생각합니다)
  2. JSP, 특히 범위, 페이지, 요청 등 중 하나에 건네 주지만 요청은 작동하지 않을 것이라고 생각합니다.
  3. 이것을 처리 할 수있는 스프링 컨트롤러를 찾으십시오.
도움이 되었습니까?

해결책

일반적으로, '페이지'라는 페이지 (get or post를 통해)에서 양식 변수를 사용합니다. 서블릿에서이를 수신하면 페이지 번호와 구성된 행을 기준으로 범위를 계산합니다.

보세요 큰 데이터 세트를 통한 페이징 (예, 파이썬이지만 동일한 원칙이 적용됩니다). 쿼리 및 색인 Google App 엔진 문서에서

다른 팁

페이지 크기를 10으로 유지하면 페이지 번호를 기준으로 각 페이지에 대해 연령 그룹당 10 명의 사용자를 검색 할 수 있습니다.

SELECT TOP 10 users FROM myusers 
 WHERE AGE = function(page_number) 
 ORDER BY some_ordering

JPA + Appengine이 그러한 유형의 쿼리를 지원하기를 바랍니다.

일부 데이터베이스 엔진은 이러한 목적으로 SQL에 편리한 확장을 제공합니다. 마찬가지로, MySQL에서는 "Select ... 무엇이든 ... 제한 50,10"과 같은 것을 말할 수 있습니다. 여기서 "50"은 시작할 행이고 10은 검색 할 행의 수입니다. 그런 다음 디스플레이 페이지에 쿼리에서 다음 실행을 위해 적절한 시작 행 번호를 서버로 전달하는 다음 버튼과 이전 버튼을 간단히 놓습니다.

사용중인 SQL 엔진에 편리한 기능이 없으면 정렬 순서를 기반으로 한 쿼리 별 "여기서"조항을 구축해야합니다.

간단한 경우를 보려면 예제에서 "user_name"으로 순서대로 레코드를 표시한다고 가정 해 봅시다. statement.setmaxrows (10)를 사용하여 쿼리를 10 행으로 제한 할 수 있습니다. 그런 다음 첫 번째 통화에서 "사용자 주문에서 user_name의 사용자 주문에서 무엇이든 선택하십시오"라고 말합니다. 마지막으로 찾은 user_name을 저장하십시오. 다음 버튼 에서이 user_name을 서버로 다시 전달하고 다음 호출의 쿼리는 "select ... whate using ... user_name> 'xxx'order by user_name"입니다. 여기서 'xxx'는 이전 호출에서 마지막 user_name. SetMaxrows를 다시 수행하여 다시 10 행의 출력으로 제한됩니다. 그런 다음 사용자가 전체 출력을 이런 방식으로 진행하도록 할 수 있습니다.

사용자가 뒤로 가도록하는 것은 약간의 고통입니다. 각 페이지의 시작 키 값이있는 세션 변수에 테이블을 유지하여 수행했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top