主要用到GORM检索的时候给定的API Limit & Offset
Limit
指定获取记录的最大数量Offset
指定在开始返回记录之前要跳过的记录数量
在接受参数的时候,需要指定 page
和pageSize
一个默认的值,这样可以实现可选参数的目的
api.go
func GetAllUsers(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "5"))
code, msg, data := sql.GetAllUser(page, pageSize)
if code == 4000 {
c.JSON(http.StatusBadRequest, gin.H{
"code": code,
"msg": msg,
"status": "failed",
})
} else if code == 5000 {
c.JSON(http.StatusOK, gin.H{
"code": code,
"msg": msg,
"status": "ok",
"data": data,
})
}
}
sql.go
func GetAllUser(page int, pageSize int) (int, string, []dao.User) {
var userList []dao.User
// 根据传入的page和pageSize计算需要返回哪些数据
result := dao.GormDB.Table("user").Limit(pageSize).Offset((page - 1) * pageSize).Find(&userList)
if result.Error != nil {
return 4000, result.Error.Error(), userList
}
return 5000, "success", userList
}
不传入page和pageSize的时候,会默认返回第一页的前五条数据
也可以指定返回第二页的前三条数据