当前位置:网站首页>从3开始,在业务系统中增加分页功能

从3开始,在业务系统中增加分页功能

2022-06-23 14:00:00 Barry Yan

这一节相对比较的简单,增加分页功能的实现利用了gorm的封装的方法并且同步更改了Gin的接收参数,进而实现了分页功能。

设计逻辑

SQL语法SELECT * FROM table LIMIT 10 OFFSET 5 ,翻译过来就行从5开始取10条数据,OFFSET可以理解成跳过这几行从后面开始取数据,LIMIT就是取几行数据。

因此我们在gorm中就可以利用封装好的API,如Limit()和Offset()等,但是需要两个参数,一个就是page代表第几页,另一个则是limit代表每页多少条数据,接下来写代码。

下面我们看下修改后的代码

dao层实现方法:

......

func (impl CountNumDAOImpl) FindAllNumInfo(ctx context.Context, page int, limit int) []entity.NumInfo {
    
   var infos []entity.NumInfo
   if page <= 0 || limit <= 0 {
    
      impl.db.Find(&infos)
   } else {
    
      impl.db.Limit(limit).Offset((page - 1) * limit).Find(&infos)
   }
   return infos
}

......

controller层接口:

......

func (impl NumInfoControllerImpl) FindAll(c *gin.Context) {
    
   page := c.Query("page")
   limit := c.Query("limit")
   numInfos := impl.dao.FindAllNumInfo(c, cast.ToInt(page), cast.ToInt(limit))
   c.JSON(200, map[string]interface{
    }{
    "code": 0, "msg": "", "count": len(numInfos), "data": numInfos})
}

......

测试:
在这里插入图片描述
分页后的结果:
在这里插入图片描述

原网站

版权声明
本文为[Barry Yan]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Mr_YanMingXin/article/details/125420590