IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> # Golang项目实战(一)后端分页处理 -> 正文阅读

[大数据]# Golang项目实战(一)后端分页处理

Golang项目实战(一)后端分页处理

背景

分页:根据设定页码及页面容量展示数据。简单来说,就是点击页码,例如1,即返回10条(容量)数据。

web项目开发经常需要将后台查询的表数据返回至前端展示,若返回全量数据前端不便处理。所以后端需根据前端传入的参数调整查表的逻辑。

实现

由于我们需要将表的数据进行分段处理,为了标记及计算当前处理的数据位置,需要引入两个参数,1、偏移量offset、2、单页容量limit,它们根据前端传入的页数pageNum,和页面容量pageSize来计算。

先上方法,计算offset

func offset(c *gin.context,limit int)int{
  //获取前端传入的参数"pageSize"
  limit := c.Query("pageSize")
  pageNum := c.Query("pageNum")
  //依次类推,当pageNum=1时,offset=0,从表中的1号数据开始查询
  return (pageNum-1)*limit
}

有了offsetlimit,我们就可以在model层对数据库进行查询操作,例如,我们想要对表metric_type中的数据分页展示,下列xorm转换为sql语句为SELECT * FROM metric_type WHERE type_name LIKE %name% ORDERBY id LIMIT offset,limit

func MetricTypeGetAll(name string, limit, offset int) ([]MetricType, int, error) {
	var data []MetricType
  //数据库查询使用了数据库映射工具xorm
  err := DB["mon"].Table("metric_type").Where("type_name like ?", "%"+name+"%").OrderBy("id").Limit(limit, offset).Find(&data)
	total := len(data)
	if err != nil {
		return nil, 0, err
	}
	return data, total, nil
}

测试

使用postman测试url:http://localhost:8008/api/transfer/metric/type-profile?pageNum=2&pageSize=2,符合需求

{
    "code": 200,
    "data": [
        {
            "id": 4,
            "parentId": 1,
            "label": "修改叶子节点2",
            "noted": "修改2",
            "updated": "2021-09-23T16:05:51+08:00",
            "created": "2021-09-23T15:55:03+08:00"
        },
        {
            "id": 5,
            "parentId": 1,
            "label": "叶子节点1",
            "noted": "备注1",
            "updated": "2021-09-23T16:15:22+08:00",
            "created": "2021-09-23T16:15:22+08:00"
        }
    ],
    "msg": "成功",
    "total": 2
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:56:57  更:2021-10-01 16:59:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:56:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码