beego框架 的分页查询

作为一个被迫转go语言后端渣渣工,在踩坑的道路上一路掉坑和探索。
最近要写一个分页查询,所用的是beego+vue+element。记录一下吧,避免后续又忘了怎么写的。
也是参考了其他人的代码,但是忘了保存那个人了如有看到还可留言 ,我在编辑一下,把大佬加上。
如有问题请指正

话不多说 看代码
pro.go

//分页查询
func GetProListPage( pageSize int ,pageNum int) ([]Oauth2Protocol,int64,error){
	o:=orm.NewOrm()
	_ = o.Using("default")
	var pro =make([]Oauth2Protocol,0)
	count,err:=o.Raw("select * from oauth2_protocol ").QueryRows(&pro)
	qs:=o.QueryTable("oauth2_protocol") //1获取数据总数
	/*	qs:=o.QueryTable("Oauth2Mids") //2获取数据总数
		count,err := qs.Count()
		fmt.Println("count1111111",count)*/
	fmt.Println("num111111111111",count) //数据库返回该表数据总条数
	//	总页数
	pageNum=common.Page(pageSize ,pageNum,count)
	//获取分页数据
	_,err =qs.Limit(pageSize, pageSize*(pageNum - 1)).All(&pro)
	if err!=nil {
		beego.Info("err",err)
		return pro,count,err
	}
	beego.Info("查找成功")
	return pro,count,err
}

page.go
//各个页面对该段代码的复用较高 我就提取出来了

type PageParam struct {
	PageSize int //每页显示多少条
	PageNum int //第几页
}
func Page(pageSize int ,pageNu int,count int64)(pageNum int) {
	pageCount := math.Ceil((float64(count) / float64(pageSize)))
	fmt.Println("总页数pageCount",pageCount)
	//	获取当前页码
	pageNum= pageNu
	fmt.Println("获取当前页码pageNum",pageNum)
	if (pageNum== 0|| pageNum== -1){
		pageNum = 1
	}
	return pageNum
}

proController.go
//分页查询

type GetRes struct {
	R   int    `json:"r"`
	Total int64 	`json:"total"`
	Msg []models.Oauth2Protocol   `json:"msg"`
	//Err error   `json:"err"`
}
// @router /getProListPage [post]  //注解路由 
func (c *ProController) GetProlistPage( pageSize int ,pageNum int ) {
	var res GetRes
	var pageinfo common.PageParam
	var total int64
	err := json.Unmarshal((c.Ctx.Input.RequestBody), &pageinfo)
	fmt.Println("GetProlistPage", pageinfo.PageSize,pageinfo.PageNum)
	proList,total, err := models.GetProListPage(pageinfo.PageSize,pageinfo.PageNum)
	if err != nil {
		res.R = 400
		res.Total=total
		res.Msg = proList
		fmt.Printf("proList", proList)
		c.Response(res)
	}
	res.R = 200
	res.Total=total
	res.Msg = proList
	fmt.Printf("proList", proList)
	c.Response(res)
}

ResponseController.go
//返回结构处理
package controllers
import (
	"encoding/json"
	"github.com/astaxie/beego"
)

type ResponseController  struct {
	beego.Controller
}

func (c *ResponseController) Response(msg interface{}){
   b,_:=json.Marshal(msg)
   beego.Info("return msg",string(b))
   c.Data["json"]=msg
   c.ServeJSON()
   c.StopRun()
}

测试结果:
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值