2009-07-27 1 views
0

Ich habe den folgenden Code für meine Website, und ich möchte dieses Ergebnis auf 10 Ergebnisse pro Seite anzeigen zu erweitern. Wenn jemand mir helfen kann, werde ich dankbar sein.Ich möchte Ergebnisse aus Datenbank anzeigen 10 pro Seite in 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

Diese Frage ist datenbankabhängig - es sei denn, Sie möchten alles auswählen und dann nur eine ausgewählte Unterliste von 10 angeben, die zwar machbar, aber nicht ratsam ist. – MetroidFan2002

Antwort

0

Es gibt zwei grundlegende Ansätze.

Die effizienteste ist die Seitenumbruch in der Datenbank zu tun. Sie werden so etwas implementieren müssen:

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

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

diese beiden Methoden zu haben, Sie machen dann die Seite Steuerelemente auf der Seite basierend auf der Anzahl von Ergebnissen aus countMyData(). Wenn Benutzer eine neue Seite auswählt, erhalten Sie die Daten für diese Seite nur mit loadMyDataPage() mit korrektem startIndex und count.

Sie möchten auch sicherstellen, dass die Abfrage relativ "stabil" ist - das Ergebnis wird meistens gleich sein, wenn es immer wieder aufgerufen wird. Der einfachste Weg, dies zu tun, ist sicherzustellen, dass Sie das Ergebnis auf etwas sinnvoll sortieren - wie Thema Datum für Forum-Software oder etwas ähnliches. Sonst "springen" die Gegenstände herum.

Zweiter Ansatz ist einfach alles auf einmal zu laden und in einem Cache zu speichern, und dann von dort anzuzeigen. Das Problem ist, dass es sehr verschwenderisch ist, besonders wenn es pro Besucher einzigartig ist, also müssen Sie vorsichtig sein, nicht alle Speicher zu verschwenden, wenn Sie versuchen, es so zu machen.

+0

Problem ist, dass die Paginierungsschlüsselwörter in SQL datenbankabhängig sind. Ich würde vorschlagen, eine Schicht wie Hibernate zu verwenden, um alle unordentlichen Details zu behandeln. –

+0

Ich stimme dir generell zu. In diesem speziellen Fall scheint das OP jedoch bereits eine Website zu haben und muss sie nur ein wenig erweitern. Alles neu zu strukturieren, um Hibernate nur zum Hinzufügen von Paginierung zu verwenden, wäre übertrieben –

0

Werfen Sie einen Blick auf DisplayTag. Es ist eine JSP-Tag-Bibliothek, die in tabellarischer Art und Weise erfolgen kann es eine Ergebnismenge und anzuzeigen, einschließlich Paginierung:

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

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