beego orm分页查询

首先在models文件夹新建pager.go
新建一个结构体,计算总页数与偏移

package models

import "math"

type Pager struct {
	Count       int64       `json:"count"`
	CurrentPage int64       `json:"current_page"`
	Data        interface{} `json:"data"`
	PageSize    int64       `json:"page_size"`
	TotalPages  int64       `json:"total_pages"`
}

func PageCount(count int64, pageSize int64, page int64) (totalPage int64, offset int64, currentPage int64) {
	pageCount := int64(math.Ceil(float64(count) / float64(pageSize)))
	if page > pageCount {
		page = pageCount
	}
	return pageCount, pageSize * (page - 1), page
}

应用:

func (p *Project) GetProjectList(pageSize int64, page int64) (status bool, pager Pager) {
	var data []Project
	o := orm.NewOrm()
	count, err := o.QueryTable(&p).Count()
	if err != nil {
		logs.Error(err)
		return false, Pager{}
	}
	totalPage, offset, currentPage := PageCount(count, pageSize, page)
	_, err = o.QueryTable(&p).Limit(pageSize, offset).All(&data)
	return true, Pager{
		Count:       count,
		CurrentPage: currentPage,
		Data:        data,
		PageSize:    pageSize,
		TotalPages:  totalPage,
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值