记录go开发中遇到的问题之~封装分页的公共方法

    技术2023-06-14  68

        最新我们用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 完事!

     

    Processed: 0.017, SQL: 9