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 }