Отображение результата запроса из базы данных в приращениях - PullRequest
0 голосов
/ 11 сентября 2009

Я хочу отобразить список всех пользователей на моем сайте, но я хочу отображать только 10 человек в возрасте. Я не знаю, как именно это сделать. Я знаю, как это сделать, просто отображая всех пользователей на одной странице, но это не очень хорошо, не так ли?

Если я сделаю это с кодом, который у меня есть сейчас, он будет получать только первые десять пользователей снова и снова. Я хочу иметь возможность получить всех пользователей за один раз, сохранить их глобально, а затем перемещаться по списку, получая следующие 10 и так далее для отображения.

Я разрабатываю на appengine с использованием Java и Spring Framework некоторые решения, о которых я думал,

  1. Сохранение в сеансе и просмотр списка (я думаю, очень плохо)
  2. передать его JSP, в частности одной из областей, страницы, запроса и т. Д. Но я думаю, что запрос не будет работать.
  3. Ищите контроллер Spring, который может справиться с этим.

Ответы [ 4 ]

1 голос
/ 11 сентября 2009

Вообще говоря, вы должны использовать переменную формы на своей странице (через GET или POST) с именем 'page', которая будет числом. Когда вы получите это в сервлете, вы рассчитаете диапазон на основе номера страницы и настроенных строк на странице.

Взгляните на Пейджинг через большие наборы данных (да, это Python, но применяются те же принципы) и Запросы и индексы из документации Google App Engine.

0 голосов
/ 11 сентября 2009

Некоторые движки баз данных предоставляют удобные расширения для SQL именно для этой цели. Например, в MySQL вы можете сказать что-то вроде «выбрать ... что угодно ... ограничить 50,10», где «50» - это строка, с которой нужно начинать, а 10 - это количество строк, которые нужно получить. Затем на странице отображения вы просто помещаете кнопки «следующий» и «предыдущий», которые передают соответствующий начальный номер строки обратно на сервер для следующего запуска по запросу.

Если в используемом вами механизме SQL нет такой удобной функции, вам нужно создать специфичное для запроса предложение "where" на основе порядка сортировки.

Чтобы взять простой случай, предположим, что в вашем примере вы отображаете записи по порядку с помощью "user_name". Вы можете использовать Statement.setMaxRows (10), чтобы ограничить любые запросы до 10 строк. Затем при первом вызове вы выполняете, скажем, «выберите ... что угодно ... в порядке пользователя по имени пользователя». Сохраните последнее найденное имя пользователя. При следующей кнопке вы передаете это имя_пользователя обратно на сервер, и запрос для следующего вызова «выбрать ... что угодно ... от пользователя, где имя_пользователя>« xxx », порядок по имени_пользователя», где «ххх» - последний user_name от предыдущего вызова. Сделайте setMaxRows снова, чтобы вы снова были ограничены 10 строками вывода. Затем вы можете позволить пользователю пройти весь вывод таким образом.

Отпустить пользователя назад - это немного больно. Я сделал это, сохранив таблицу в переменной сеанса со значением начального ключа для каждой страницы.

0 голосов
/ 11 сентября 2009

Если вы сохраняете размер страницы на 10, вы можете получить 10 пользователей для каждой возрастной группы для каждой страницы на основе номера страницы:

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

Я надеюсь, что JPA + appengine поддерживает такой тип запроса.

0 голосов
/ 11 сентября 2009

Взгляните на http://valuelist.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...