Maison >développement back-end >Golang >Comment paginer les requêtes de base de données dans Golang ?
Réponse : Oui, vous pouvez utiliser les mots-clés LIMIT et OFFSET pour paginer les requêtes de base de données dans Golang. Les étapes sont les suivantes : Déterminez le nombre d'enregistrements à afficher sur chaque page (pageSize). Calculez le décalage (offset), en partant de 0. Utilisez fmt.Sprintf pour créer dynamiquement la chaîne de requête, en insérant les valeurs pageSize et offset. Utilisez LIMIT pour limiter le nombre d'enregistrements à récupérer et OFFSET pour ignorer les enregistrements précédents. Utilisez l'objet rows pour parcourir l'ensemble de résultats et utilisez la fonction Scan pour extraire la valeur de chaque ligne.
Comment paginer des requêtes de base de données dans Golang
La pagination est une fonctionnalité courante dans les applications Web qui permet aux utilisateurs d'afficher une partie d'une grande quantité de données selon une taille spécifiée. Dans Golang, les requêtes peuvent être paginées à l'aide des mots-clés LIMIT
et OFFSET
. LIMIT
和 OFFSET
关键字对查询进行分页。
package main import ( "database/sql" "fmt" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname") if err != nil { panic(err) } defer db.Close() // 每页显示 10 条记录 pageSize := 10 // 获取第 2 页的数据,OFFSET 从 0 开始 offset := (2 - 1) * pageSize // 编写分页查询 query := fmt.Sprintf(` SELECT id, name FROM users LIMIT %d OFFSET %d `, pageSize, offset) rows, err := db.Query(query) if err != nil { panic(err) } defer rows.Close() // 遍历结果集 for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { panic(err) } fmt.Println(id, name) } }
在这个示例中:
pageSize
指定每页显示的记录数。offset
根据当前页数计算偏移量,以便跳过前面的记录。query
字符串使用 fmt.Sprintf
动态构建,插入 pageSize
和 offset
值。LIMIT
限制要获取的记录数,并使用 OFFSET
跳过前面的记录。rows
对象用于遍历结果集,Scan
rrreeepageSize
spécifie le nombre d'enregistrements à afficher par page. 🎜offset
Calcule le décalage en fonction du numéro de page actuel pour ignorer les enregistrements précédents. 🎜query
est construite dynamiquement à l'aide de fmt.Sprintf
, en insérant les valeurs pageSize
et offset
. 🎜LIMIT
pour limiter le nombre d'enregistrements à récupérer et OFFSET
pour ignorer les enregistrements précédents. L'objet 🎜rows
est utilisé pour parcourir l'ensemble de résultats, et la fonction Scan
est utilisée pour extraire la valeur de chaque ligne. 🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!