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

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

本次我们接着上三篇文章进行讲解《从0开始,用Go语言搭建一个简单的后端业务系统》《从1开始,扩展Go语言后端业务系统的RPC功能》《从2开始,在Go语言后端业务系统中引入缓存》

这一节相对比较的简单,增加分页功能的实现利用了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})
}
......
复制代码

测试:

网络异常,图片无法展示
|


分页后的结果:

网络异常,图片无法展示
|


相关文章
|
1月前
|
存储 监控 算法
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
83 0
|
1月前
|
SQL 缓存 Go
从3开始,在业务系统中增加分页功能
从3开始,在业务系统中增加分页功能
19 0
|
iOS开发
检索业务:基本数据渲染和排错
检索业务:基本数据渲染和排错
检索业务:基本数据渲染和排错
|
存储 开发框架 前端开发
ModStartCMS v5.5.0 页面标签支持,用户逻辑优化
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。
|
NoSQL MongoDB 数据库
数据增加|学习笔记
快速学习数据增加
53 0
数据增加|学习笔记
|
缓存 前端开发 数据可视化
前端基础向--空表格处理与分页调整,优化用户体验
前端基础向--空表格处理与分页调整,优化用户体验
160 0
|
存储 安全 JavaScript
请求合并的 3 种方式,大大提高接口性能!
将相似或重复请求在上游系统中合并后发往下游系统,可以大大降低下游系统的负载,提升系统整体吞吐率。文章介绍了 hystrix collapser、ConcurrentHashMultiset、自实现BatchCollapser 三种请求合并技术,并通过其具体实现对比各自适用的场景。
|
前端开发 JavaScript 应用服务中间件
前后端配合实现简单的分页功能
前后端配合实现简单的分页功能
331 0
|
缓存 Ubuntu Linux
性能分析(7)- 未利用系统缓存导致 I/O 缓慢案例
性能分析(7)- 未利用系统缓存导致 I/O 缓慢案例
419 0
性能分析(7)- 未利用系统缓存导致 I/O 缓慢案例
|
SQL canal 存储
百万级数据,分页如何处理?
百万级数据,分页如何处理?
百万级数据,分页如何处理?