So implementieren Sie Abfrage-Paging in Golang

PHPz
Freigeben: 2023-04-05 14:10:13
Original
1963 Leute haben es durchsucht

Go-Sprache ist eine der sehr beliebten Programmiersprachen der letzten Jahre. Aufgrund ihrer hohen Effizienz und starken Skalierbarkeit wird sie von immer mehr Entwicklern in verschiedenen Bereichen verwendet. Unter ihnen ist die Abfrage-Paging-Funktion von Golang weit verbreitet und eine häufige Funktionsanforderung in vielen Anwendungen auf Unternehmensebene. In diesem Artikel werden die Implementierungsmethoden und Beispiele für Golang-Abfrage-Paging ausführlich vorgestellt.

1. Implementierungsmethode für Golang-Abfrage-Paging

1. ORM-Framework übernehmen

ORM (Object-Relation Mapping) ist eine Programmiertechnologie, die Objekte und relationale Datenbanken zuordnet, und es ist auch eine Programmieridee. Das ORM-Framework ist eine relativ ausgereifte Technologie. GORM in Golang ist beispielsweise ein Open-Source-ORM-Framework. Es kann Strukturen und Datenbanktabellen zuordnen und CRUD-Operationen in Datenbankabfrageanweisungen umwandeln, wodurch Datenspeicherung und -lesen erreicht werden.

GORM ist eines der beliebtesten ORM-Frameworks in Golang. Es bietet sehr einfache API-Operationen, sodass auch Anfänger problemlos damit beginnen können. Mit GORM können wir Paging-Abfragen einfach auf SQL-Basis implementieren. Der spezifische Implementierungscode lautet wie folgt:

func FindPage(pageNum int, pageSize int) (users []User, total int64, err error) {
    tx := db.Model(&User{})
    tx.Count(&total)
    err = tx.Offset((pageNum - 1)*pageSize).Limit(pageSize).Find(&users).Error
    if err != nil && err != gorm.ErrRecordNotFound {
        return nil, 0, err
    }
    return
}
Nach dem Login kopieren

Im obigen Code definieren wir eine Funktion namens FindPage, um Paging-Abfragen zu implementieren. Zuerst erhalten wir das Benutzermodell über die Methode db.Model(), rufen dann die Methode Count() auf, um die Gesamtzahl der abgefragten Datensätze zu zählen, verwenden dann die Methoden Offset und Limit, um Paging zu implementieren, und rufen schließlich Find( auf; )-Methode zum Speichern der Abfrageergebnisse in der Benutzervariablen. Darüber hinaus muss während des Abfrageprozesses besonderes Augenmerk auf die Fehlerbehandlung gelegt werden, um die Sicherheit und Zuverlässigkeit von Funktionsaufrufen zu gewährleisten.

2. Benutzerdefinierte Paging-Abfragefunktion

In tatsächlichen Anwendungen können Sie auch Ihre eigene Paging-Abfragefunktion definieren, um den Geschäftsanforderungen besser gerecht zu werden. Die spezifische Implementierungsmethode lautet wie folgt:

func CustomFindPage(pageNum int, pageSize int, query string) (users []User, total int64, err error) {
    sql := "SELECT * FROM users WHERE 1 = 1 " + query + " ORDER BY created_at DESC LIMIT ? OFFSET ?"
    err = db.Raw(sql, pageSize, (pageNum-1)*pageSize).Scan(&users).Error
    if err != nil && err != gorm.ErrRecordNotFound {
        return nil, 0, err
    }
    err = db.Model(&User{}).Where(query).Count(&total).Error
    if err != nil {
        return nil, 0, err
    }
    return
}
Nach dem Login kopieren

Anders als das ORM-Framework verwendet diese Methode native SQL-Anweisungen zur Implementierung, und Abfragebedingungen und Abfrageanweisungen können frei definiert werden, um den Geschäftsanforderungen besser gerecht zu werden.

2. Beispiele für Golang-Abfrage-Paging

1. ORM-Framework implementiert Paging-Abfrage

Beziehen Sie sich auf den folgenden Code:

type User struct {
    gorm.Model
    Name string `gorm:"column:name" json:"name"`
    Age  int    `gorm:"column:age" json:"age"`
}

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(127.0.0.1:3306)/demo_golang?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    var (
        pageNum  = 1
        pageSize = 10
        users    []User
        total    int64
    )
    if users, total, err = FindPage(pageNum, pageSize); err != nil {
        fmt.Printf("查询用户列表失败:%v\n", err)
        return
    }
    fmt.Printf("查询到的用户列表如下:\n%+v\n总记录数:%d\n", users, total)
}
Nach dem Login kopieren

Der obige Code implementiert die Paging-Abfragefunktion basierend auf dem ORM-Framework. Dazu müssen Sie zuerst das Benutzermodell definieren und die Datenbank über GORM erstellen. Definieren Sie dann eine Abfragefunktion namens FindPage(), die zwei Parameter, pageNum und pageSize, enthält, um die Daten der angegebenen Seitennummer und die Anzahl der auf jeder Seite angezeigten Datensätze abzufragen. Die Funktion gibt zwei Werte zurück, einer ist die abgefragte Benutzerliste und der andere ist die Gesamtzahl der Datensätze in der Liste. Rufen Sie abschließend die Funktion FindPage() in der Hauptfunktion auf, um die Ergebnisse der Paging-Abfrage abzufragen und auszugeben.

2. Benutzerdefinierte Funktion zum Implementieren der Paging-Abfrage

Beziehen Sie sich auf den folgenden Code:

type User struct {
    Name      string `gorm:"column:name" json:"name"`
    Age       int    `gorm:"column:age" json:"age"`
    CreatedAt int64  `gorm:"column:created_at" json:"created_at"`
}

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(127.0.0.1:3306)/demo_golang?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    var (
        pageNum  = 1
        pageSize = 10
        order    = "DESC"
        field    = "created_at"
        query    = ""
        users    []User
        total    int64
    )
    if users, total, err = CustomFindPage(pageNum, pageSize, query, field, order); err != nil {
        fmt.Printf("查询用户列表失败:%v\n", err)
        return
    }
    fmt.Printf("查询到的用户列表如下:\n%+v\n总记录数:%d\n", users, total)
}
Nach dem Login kopieren

Der obige Code implementiert die Abfrage-Paging-Funktion basierend auf der benutzerdefinierten Paging-Abfragefunktion. Dazu müssen Sie zuerst das Benutzermodell definieren, die Abfrageparameter (pageNum, pageSize, field, order, query) in der Hauptfunktion festlegen und dann die Funktion CustomFindPage() aufrufen, um die Paging-Abfrage zu implementieren. Es ist zu beachten, dass Sie in der benutzerdefinierten Abfragefunktion die SQL-Anweisung und die Abfragebedingungen manuell verbinden und die native SQL-Anweisung zum Abfragen verwenden müssen. Darüber hinaus können wir die benutzerdefinierte Paging-Abfragefunktion entsprechend den spezifischen Anforderungen weiter modifizieren, um flexiblere Abfragen zu erreichen.

3. Zusammenfassung

In diesem Artikel werden die Implementierungsmethoden und Beispiele für Golang-Abfrage-Paging vorgestellt, von der grundlegenden Verwendung des ORM-Frameworks bis hin zu benutzerdefinierten Paging-Abfragefunktionen, und es werden gängige Abfragemethoden in praktischen Anwendungen behandelt. Unabhängig davon, ob Sie Anfänger oder erfahrener Golang-Entwickler sind, können Sie die spezifischen Implementierungsmethoden erlernen und die Funktionen und Technologien der Golang-Sprache besser verstehen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Abfrage-Paging in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage