最新我们用grpc 微服务对系统升级,在我们需求中很多需要分页的数据,所以,我就封装了一个分页的工具类,记录下来,以便日后复用 ,我们都知道 分页最重要的是两个参数 currentPage(当前页),pageSize(每页数量),有这个两个数,我们就可以计算出来剩下的一些参数.超级简单
//由于采用的是grpc的proto传递参数,所以里面有些int转int32格式的代码,实际应用根据自己项目来改变
func BasePage(currPage int32, pageSize int32, count int32) map[string]int32 {
var previouspage int //当前页对应的上一页地址
var lastpage int //当前页对应的下一页地址
currentPage := int(currPage)
pageSizeNum := int(pageSize)
countNum := int(count)
//生成分页总数 totalpages
totalpages := int(math.Ceil(float64(countNum) / float64(pageSizeNum))) //分页总数
if currentPage > totalpages {
currentPage = totalpages
}
if currentPage <= 0 {
currentPage = 1
}
previouspage = int(math.Max(float64(1), float64(currentPage-1)))
lastpage = currentPage + 1
pageMap := make(map[string]int32)
pageMap["totalpages"] = int32(totalpages) //总页数
pageMap["previouspage"] = int32(previouspage) //当前页数的前一页
pageMap["lastPage"] = int32(lastpage) //当前页数的后一页
pageMap["currPage"] = int32(currentPage) //当前页数
pageMap["pageSize"] = int32(pageSizeNum) //每页数量
pageMap["count"] = int32(countNum) //总数量
return pageMap
}
参数说明:
currPage : 前端传递过来
pageSize : 前端传递过来
count : 自己根据自己需求数据库查询出来的数据总数
调用:
ok 完事!