1234567891011121314151617181920212223242526 |
- package page
- import (
- "gorm.io/gorm"
- )
- type PageParams struct {
- Page int `json:"page" form:"page"`
- Size int `json:"size" form:"size"`
- Desc string `json:"desc" form:"desc"`
- }
- // Paginate 使用给定的DB连接执行分页查询
- func Paginate[T any](db *gorm.DB, params PageParams, model T) (result []T, total int64, err error) {
- var count int64
- if err = db.Model(model).Count(&count).Error; err != nil {
- return nil, 0, err
- }
- // 计算偏移量并设置分页大小
- offset := (params.Page - 1) * params.Size
- // 执行实际分页查询
- if err = db.Offset(offset).Limit(params.Size).Order(params.Desc).Find(&result).Error; err != nil {
- return nil, 0, err
- }
- return result, count, nil
- }
|