MySql implementiert die Seitenabfragefunktion

MySql implementiert die Seitenabfragefunktion

Zunächst müssen wir klarstellen, warum wir paginierte Abfragen verwenden. Da die Daten sehr groß sind, ist es unmöglich, alle Daten auf der Seite anzuzeigen. Wenn alle Daten auf der Seite angezeigt werden, ist die Abfragegeschwindigkeit langsam. Daher löst die paginierte Abfrage die Probleme ① Datenabfrage; ② Leistungsoptimierung usw. (andere Probleme können gerne ergänzt werden).

Paginierungsabfragen werden auch in echte und falsche Paginierung unterteilt:

Echtes Paging: Zeigt die in der Datenbank gefundenen Daten direkt in Seiten an. Der Vorteil besteht darin, dass Änderungen an den Datenbankdaten die Abfrageergebnisse nicht beeinflussen. Der Nachteil besteht darin, dass die Geschwindigkeit etwas geringer ist.

Falsche Paging: Kapseln Sie alle abgefragten Daten in den Listensammlungscache und führen Sie den Methodenaufruf der Präsentationsschicht aus. Da die Daten als Sammlung gekapselt und im Speicher abgelegt werden, ist die Geschwindigkeit höher, der Nachteil besteht jedoch darin, dass es nach einer Änderung der Datenbank zu Nichtübereinstimmungen kommt.

Die beiden Paging-Arten haben ihre eigenen Vor- und Nachteile. Bitte verwenden Sie sie je nach der jeweiligen Situation.

Das Folgende ist die eigentliche Paging-Methode:

1. JavaBean erstellen

importiere java.io.Serializable;
/**
 * Benutzerentitätsklasse * @author 
 *
 */
öffentliche Klasse UserBean implementiert Serializable {
  /**Benutzer-ID*/
  private int-ID;
  /**Benutzername*/
  privater String-Name;
  öffentliche UserBean() {
  }
  öffentliche UserBean(int id, String name) {
    diese.id = ID;
    dieser.name = Name;
  }
  öffentliche int getId() {
    Rückgabe-ID;
  }
  öffentliche void setId(int id) {
    diese.id = ID;
  }
  öffentliche Zeichenfolge getName() {
    Rückgabename;
  }
  öffentliche void setName(String name) {
    dieser.name = Name;
  }
  @Überschreiben
  öffentliche Zeichenfolge toString() {
    gibt "UserBean [id=" + id + ", name=" + name + "]" zurück;
  }
}

2. JavaBean zum Anzeigen von Paging-Daten

/**
 * JavaBean-Objekt zum Anzeigen von Paging-Daten * @author
 *
 */
importiere java.util.List;
öffentliche Klasse PagenationBean {
  /** Aktuelle Seitenzahl*/
  private Integer aktuelleSeite;
  /**Gesamtzahl der Seiten*/
  private Ganzzahl Gesamtseite;
  /**Tabellendaten zur Anzeige */
  private Liste<UserBean> Datenliste;
  öffentliche Ganzzahl getCurrPage() {
    aktuelleSeite zurückgeben;
  }
  öffentliche void setCurrPage(Integer currPage) {
    diese.aktuelleSeite = aktuelleSeite;
  }
  öffentliche Ganzzahl getTotalPage() {
    gib Gesamtseite zurück;
  }
  public void setTotalPage(Integer totalPage) {
    this.totalPage = Gesamtseite;
  }
  öffentliche Liste<StuBean> getDataList() {
    Datenliste zurückgeben;
  }
  public void setDataList(List<StuBean> dataList) {
    diese.Datenliste = Datenliste;
  }
}

3. Implementierungsklasse der Dao-Schicht

 @Überschreiben
  public int getTotalCount() { //Gesamtzahl der Daten berechnen this.setConnection();
    int Gesamtanzahl = 0;
    versuchen {
      ps = con.prepareStatement("Wählen Sie count(*) aus t_user aus");
      rs = ps.executeQuery();
      wenn (rs.next()) {
        totalCount = rs.getInt(1);
      }
    } Fang (Ausnahme e) {
      e.printStackTrace();
    Endlich
      diese.closeConnection();
    }
    gib Gesamtanzahl zurück;
  }
  @Überschreiben
  public List<UserBean> getUserListByStartIndex(int ​​​​StartIndex) { // Holen Sie sich gemäß dem ersten übergebenen Parameter „limit“ die 10 Daten hinter diesem Parameter. List<UserBean> userList = new ArrayList<>();
    BenutzerBean BenutzerBean = null;
    dies.setConnection();
    int Gesamtanzahl = 0;
    versuchen {
      ps = con.prepareStatement("Wählen Sie * aus t_user-Limit?, 10");
      ps.setInt(1, StartIndex);
      rs = ps.executeQuery();
      während (rs.next()) {
        userBean = neue StuBean();
        userBean.setId(rs.getInt("id"));
        userBean.setName(rs.getString("name"));
        stuList.add(userBean);
      }
    } Fang (Ausnahme e) {
      e.printStackTrace();
    Endlich
      diese.closeConnection();
    }    
    Benutzerliste zurückgeben;
  }

4. Implementierungsklasse der Serviceschicht

private IUserDao isd = neues UserDaoImpl();
  @Überschreiben
  öffentliche int getTotalPage() {
    //Anzahl der Daten abrufen int totalCount = isd.getTotalCount();
    //Gesamtseitenzahl berechnen: int totalPage = (totalCount + 10 -1)/10;
    gib Gesamtseite zurück;
  }
  @Überschreiben
  öffentliche Liste<UserBean> getUserListByCurrPage(int currPage) {
    //Startindex durch die aktuelle Seite berechnen int StartIndex = (currPage - 1) * 10;
    List<UserBean> userList = isd.getStuListByStartIndex(StartIndex);
    Benutzerliste zurückgeben;
  }

5. Fügen Sie die abgefragten Daten zur Anzeige in die Seite ein.

Bei der obigen Methode werden 10 Daten auf Seiten angezeigt. Die Berechnung und Analyse erfolgen wie folgt:

Gesamtzahl der Datenelemente: totalCount

Anzahl der Einträge pro Seite: pageSize

Gesamtzahl der Seiten: totalPage

StartIndex

Aktuelle Seitenzahl currPage

Formel zur Berechnung der Gesamtseitenzahl:

Gesamtanzahl % Seitengröße

Wenn der Rest 0 ist ——> totalPage = totalCount / pageSize

Wenn der Rest nicht 0 ist ——> totalPage = totalCount / pageSize + 1

Fazit: totalPage = (totalCount + pageSize -1)/pageSize

Zusammenfassen

Oben sehen Sie die vom Herausgeber eingeführte MySql-Seitenabfragefunktion. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Tipps zur Optimierung des Umblätterns von Hot Posts in Discuz! durch MySQL
  • JAVA/JSP-Lernreihe 8 (Umschreiben des MySQL-Seitenumblätterbeispiels)
  • JAVA/JSP-Lernreihe 6 (MySQL-Beispiel zum Umblättern)
  • Wird der Index in der MySQL-Abfragebedingung verwendet?
  • Detaillierte Erklärung des Codes zum Abfragen von Daten eines bestimmten Tages, Monats oder Jahres in MySQL
  • Ein einfaches Beispiel für eine gemeinsame MySQL-Tabellenabfrage
  • So lösen Sie das Problem der Groß-/Kleinschreibung bei MySQL-Abfragen
  • Ein Beispiel zum Abfragen von Daten in MySQL und zum Aktualisieren dieser Daten in eine andere Tabelle basierend auf Bedingungen

<<:  So kaufen Sie einen Server und richten ihn zunächst ein

>>:  Detaillierte Erklärung zur Verwendung der JavaScript-Zwischenablage

Artikel empfehlen

So migrieren Sie MySQL-Daten richtig nach Oracle

In der MySQL-Datenbank gibt es eine Tabelle Stude...

Einige häufige Fehler mit MySQL null

Laut Nullwerten bedeutet der Wert Null in MySQL l...

Detaillierte Erklärung der Mixin-Verwendung in Vue

Inhaltsverzeichnis Vorwort 1. Was sind Mixins? 2....

Einstellen der Engine MyISAM/InnoDB beim Erstellen einer Datentabelle in MySQL

Als ich MySQL konfiguriert habe, habe ich die Sta...

Farbabstimmungstechniken und Effektdarstellung für Beauty- und Styling-Websites

Farbe ist eines der wichtigsten Elemente jeder We...

So erstellen Sie einen Flammeneffekt mit CSS

Unten beginnt der Haupttext. 123WORDPRESS.COM Her...

Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL

Vorwort Ab MySQL-Version 3.23.44 unterstützen Inn...

So verstehen Sie den einfachen Speichermodus der Statusverwaltung von Vue

Inhaltsverzeichnis Überblick 1. Definieren Sie st...

So fügen Sie CentOS7 systemd benutzerdefinierte Systemdienste hinzu

systemd: Das Service-Systemctl-Skript von CentOS ...

Detaillierte Erläuterung des Docker-Arbeitsmodus und -Prinzips

Wie in der folgenden Abbildung dargestellt: Wenn ...

Web-Theorie: Bringen Sie mich nicht zum Nachdenken über Lesehinweise

Kapitel 1 <br />Das wichtigste Prinzip, um ...

Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Ein Ereignis ist eine vom Benutzer oder dem Brows...

Schritte zum Aktivieren des MySQL-Datenbanküberwachungs-Binlogs

Vorwort Wir müssen häufig etwas basierend auf bes...