1. Limit
Limit 指定要查询的最大记录数。
示例:
取出时间倒叙的最后5条记录
db.Order("created_at desc").Limit(5).Find(&users)
2. Offset
Offset指定开始返回记录前要跳过的记录数。
※ offset 需要配合limit 使用
db.Limit(5).Offset(5).Order("created_at desc").Find(&users)
3. count
获取模型的记录数。
※ 使用count 不能用 Offset 或将Offset值设为 -1(-1代表取消offset限制)
否则会报 :sql: no rows in result set 的错误。
db.Limit(5).Offset(-1).Order("created_at desc").Find(&users).Count(&count)
// 或
db.Model(&User{}).Where("name = ?", "jinzhu").Count(&count)
4. 分页实例
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type User struct {
gorm.Model
Name string `gorm:"default:''"`
IsMan bool `gorm:"not null;default:false"`
Price *int `gorm:"default:0"`
}
func main() {
db, err := gorm.Open("mysql", "root:root@/gormdb?charset=utf8&parseTime=True&loc=Local")
defer db.Close()
if err != nil {
panic(err)
}
defer db.Close()
//生成数据库表
//db.AutoMigrate(&User{})
//db.Create(&User{Name:"shijia1"})
var users []User
var page int = 2
var pageSize int = 5
var total int = 0
// 获取取指page,指定pagesize的记录
db.Where("price >= ?",0).Limit(pageSize).Offset((page-1)*pageSize).Order("created_at desc").Find(&users)
// 获取总条数
db.Model(&User{}).Where("price >= ?",0).Count(&total)
fmt.Println(users,"总数:",total)
}