2009-07-27 1 views
0

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

java.sql.PreparedStatement p = servlet1.DB.query("select * from user where userdate like "); 
p.setString(1,userdate); 
java.sql.ResultSet r = p.executeQuery(); 
+0

Этот вопрос зависит от базы данных - если вы не хотите выбирать все, а затем просто предоставляете избранный подсписк из 10, что выполнимо, но нецелесообразно. – MetroidFan2002

ответ

0

Существует два основных подхода.

наиболее эффективный - это сделать разбиение на страницы в базе данных. Вам нужно будет реализовать что-то вроде этого:

public long countMyData(..query params..); 

public Object[] loadMyDataPage(..query params.., long startIndex, long count); 

Имея эти два метода, вы затем сделать элементы управления страницы на странице на основе количества результатов от countMyData(). Когда пользователь выбирает новую страницу, вы получаете данные для этой страницы только с помощью loadMyDataPage() с правильным значением startIndex и count.

Вы также хотите убедиться, что запрос относительно «устойчивый» - результат будет в основном таким же, когда он называется время от времени. Самый простой способ сделать это - убедиться, что вы сортируете результат на что-то разумное - как дата темы для форума или что-то в этом роде. В противном случае предметы будут «прыгать».

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

+0

Проблема в том, что ключевые слова страницы в SQL зависят от базы данных. Я бы предложил использовать слой типа Hibernate для обработки всех беспорядочных деталей. –

+0

Я согласен с вами в целом. В этом конкретном случае, однако, похоже, что у OP уже есть веб-сайт, и ему просто нужно немного его расширить. Рефакторинг для использования Hibernate просто для добавления разбивки на страницы будет излишним –

0

Посмотрите на DisplayTag. Это библиотека тегов JSP, который может принимать набор результатов и отобразить его в виде таблицы, в том числе пагинации:

<sql:query var="results"> 
    select * from table 
</sql:query> 

<display:table name="${results.rows}" pagesize="10"/>