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