从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})
}
......
复制代码

测试:

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


分页后的结果:

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


相关文章
|
6月前
|
Oracle 数据库 UED
后台查询接口影响响应时间最大的因素:用空间换时间的优缺点及解决方案
1.当数据库的一个表记录很多显然查询数据很慢。 2.当数据库的一个表记录不大,但是数据很大也可能很慢。 我们的一个用户表中一个building很大,当查询100条数据就会把服务器的内存搞爆掉。 当然查询时要查询筛选有用字段,不可以直接把记录的所有字段都查拆来。这样能减少内存消耗和提高查询速度。 3.在经常查询字段上建立索引。据说oracle上用索查询和不用索引查询在超多记录的情况下相差1000倍。 4.若出现嵌套查询显然会大大增加相应查询时间。要先预处理用管道操作把能合并的查询合并到一个查询中,然后生成map,然后再处理。这是标准的用空间换时间的方案。
92 8
|
3月前
|
缓存 监控 前端开发
大量数据如何做分页处理
【8月更文挑战第13天】面对大量数据分页,可从数据库与应用两方面着手:数据库端利用内置分页功能如MySQL的`LIMIT`与`OFFSET`,及SQL Server的`ROW_NUMBER()`;优化查询,精选字段并为常用排序字段加索引。应用端采用缓存已分页数据、异步加载新页及前端懒加载技术。同时限制最大页数并持续监控优化性能,确保高效查询与良好用户体验。
|
6月前
|
SQL 缓存 Go
从3开始,在业务系统中增加分页功能
从3开始,在业务系统中增加分页功能
28 0
|
SQL 消息中间件 Java
百万级数据excel导出功能如何实现?
这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助。 原始需求:用户在UI界面上点击全部导出按钮,就能导出所有商品数据。
628 0
百万级数据excel导出功能如何实现?
|
存储 开发框架 前端开发
ModStartCMS v5.5.0 页面标签支持,用户逻辑优化
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。
|
BI 数据处理 Scala
报表统计_执行框架_旧模块改造 | 学习笔记
快速学习报表统计_执行框架_旧模块改造
114 0
报表统计_执行框架_旧模块改造 | 学习笔记
|
NoSQL MongoDB 数据库
数据增加|学习笔记
快速学习数据增加
数据增加|学习笔记
|
缓存 前端开发 数据可视化
前端基础向--空表格处理与分页调整,优化用户体验
前端基础向--空表格处理与分页调整,优化用户体验
192 0
typescripet92-添加任务功能优化
typescripet92-添加任务功能优化
109 0
typescripet92-添加任务功能优化
|
前端开发 JavaScript 应用服务中间件
前后端配合实现简单的分页功能
前后端配合实现简单的分页功能
363 0