继Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API,有一个接口是查询文章,不过由于文章会有很多,所以需要分页显示,类似于下面的效果

我使用的是PostgreSQL数据库,就以它为例展示如何完成后台数据分页,还好是数据库本身带有的特性。

数据库文章表里原始数据:

csdn=# select * from articles order by  updated_at desc;id |          created_at           |          updated_at           |          deleted_at           |                           title         |                                               content                                                |         category   |             tag              |                    author
----+-------------------------------+-------------------------------+-------------------------------+-----------------------------------------
------------------+------------------------------------------------------------------------------------------------------+--------------------
-------+------------------------------+----------------------------------------------6 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:46:40.626837+08 | 测试删除                                | 测试删除                                                                                             | ['golang','postgrxy
esql'] | ['golang','go']              | ['dongguangming', 'dgm']5 | 2020-07-16 13:09:47.795349+08 | 2020-07-16 13:09:47.795349+08 |                               | 我在江宁                                | 江宁地广,路很宽                                                                                     | ['南京','江宁']    | ['南京','百家湖','购物']     | ['dmg']4 | 2020-07-16 13:08:35.71687+08  | 2020-07-16 13:08:35.71687+08  |                               | 新街口                                  | 新街口商场很多,东西也贵                                                                             | ['南京','金陵']    | ['南京','金陵','购物']       | ['dmg','董广明']3 | 2020-07-16 13:07:18.856783+08 | 2020-07-16 13:07:18.856783+08 |                               | 南京总统府咋样                          | 南京总统府很好玩                                                                                     | ['南京','金陵']    | ['南京','金陵','旅游']       | ['董广明']2 | 2020-07-16 13:05:56.92499+08  | 2020-07-16 13:05:56.92499+08  |                               | Java开发RESTful API                     | java开发接口开发过程                                                                                 | ['java','postgresql
']     | ['java','code','postgresql'] | ['dongguangming', '董广明']1 | 2020-07-16 12:57:17.621445+08 | 2020-07-16 12:57:17.621445+08 |                               | Golang学习系列第五天: Golang和PostgreSQ
L开发 RESTful API | 记录接口开发过程,出了问题,直接看博客,不,需要再查其他网文,节省时间干其他事,时间就是毛爷爷!!! | ['golang','postgrxy
esql'] | ['golang','go','postgresql'] | ['dongguangming', 'dgm','董广明','知名学者']
(6 rows)

通过limit和offset控制返回的数据行

csdn=# select * from articles order by  updated_at desc limit 2;id |          created_at           |          updated_at           |          deleted_at           |  title   |     content      |         ca
tegory          |           tag            |          author
----+-------------------------------+-------------------------------+-------------------------------+----------+------------------+-----------
----------------+--------------------------+--------------------------6 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:46:40.626837+08 | 测试删除 | 测试删除         | ['golang',
'postgrxyesql'] | ['golang','go']          | ['dongguangming', 'dgm']5 | 2020-07-16 13:09:47.795349+08 | 2020-07-16 13:09:47.795349+08 |                               | 我在江宁 | 江宁地广,路很宽 | ['南京','
宁']           | ['南京','百家湖','购物'] | ['dmg']
(2 rows)csdn=# select * from articles order by  updated_at desc limit 2 offset 0;id |          created_at           |          updated_at           |          deleted_at           |  title   |     content      |         ca
tegory          |           tag            |          author
----+-------------------------------+-------------------------------+-------------------------------+----------+------------------+-----------
----------------+--------------------------+--------------------------6 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:42:20.291723+08 | 2020-07-16 13:46:40.626837+08 | 测试删除 | 测试删除         | ['golang',
'postgrxyesql'] | ['golang','go']          | ['dongguangming', 'dgm']5 | 2020-07-16 13:09:47.795349+08 | 2020-07-16 13:09:47.795349+08 |                               | 我在江宁 | 江宁地广,路很宽 | ['南京','
宁']           | ['南京','百家湖','购物'] | ['dmg']
(2 rows)csdn=# select * from articles order by  updated_at desc limit 2 offset 2;id |          created_at           |          updated_at           | deleted_at |     title      |         content          |    category    |          tag           |      author
----+-------------------------------+-------------------------------+------------+----------------+--------------------------+----------------
-+------------------------+------------------4 | 2020-07-16 13:08:35.71687+08  | 2020-07-16 13:08:35.71687+08  |            | 新街口         | 新街口商场很多,东西也贵 | ['南京','金陵']| ['南京','金陵','购物'] | ['dmg','董广明']3 | 2020-07-16 13:07:18.856783+08 | 2020-07-16 13:07:18.856783+08 |            | 南京总统府咋样 | 南京总统府很好玩         | ['南京','金陵']| ['南京','金陵','旅游'] | ['董广明']
(2 rows)csdn=# select * from articles order by  updated_at desc limit 2 offset 4;id |          created_at           |          updated_at           | deleted_at |                           title                           |content                                                |         category          |           tag              |                    author
----+-------------------------------+-------------------------------+------------+-----------------------------------------------------------+
------------------------------------------------------------------------------------------------------+---------------------------+-----------
-------------------+----------------------------------------------2 | 2020-07-16 13:05:56.92499+08  | 2020-07-16 13:05:56.92499+08  |            | Java开发RESTful API                                       |java开发接口开发过程                                                                                 | ['java','postgresql']     | ['java','c
ode','postgresql'] | ['dongguangming', '董广明']1 | 2020-07-16 12:57:17.621445+08 | 2020-07-16 12:57:17.621445+08 |            | Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API |记录接口开发过程,出了问题,直接看博客,不,需要再查其他网文,节省时间干其他事,时间就是毛爷爷!!! | ['golang','postgrxyesql'] | ['golang',
'go','postgresql'] | ['dongguangming', 'dgm','董广明','知名学者']
(2 rows)csdn=# select * from articles order by  updated_at desc limit 2 offset 6;id | created_at | updated_at | deleted_at | title | content | category | tag | author
----+------------+------------+------------+-------+---------+----------+-----+--------
(0 rows)csdn=#

注:limit可以理解为一页显示多少条数据,而offset表示偏移量,表示从哪行开始计数

参考:

  1. PostgreSQL LIMIT and OFFSET https://www.postgresql.org/docs/current/queries-limit.html

  2. Five ways to paginate in Postgres, from the basic to the exotic https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/

  3. Pagination Done the PostgreSQL Way https://leopard.in.ua/2014/10/11/postgresql-paginattion#.XxnYv-_CwXd

  4. How to Paginate in SQL - PostgreSQL https://rabbitoncode.com/big-data/2019/10/10/pagination-postgres/

  5. LIMIT,  OFFSET, ORDER BY and Pagination in PostgreSQL https://technobytz.com/limit-offset-order-by-and-pagination-in-postgresql.html

  6. SQL Pagination with LIMIT and OFFSET https://www.petefreitag.com/item/451.cfm

  7. How To Do Pagination in Postgres with Golang in 4 Common Ways  https://medium.com/easyread/how-to-do-pagination-in-postgres-with-golang-in-4-common-ways-12365b9fb528

  8. Faster SQL Pagination with jOOQ Using the Seek Method https://blog.jooq.org/2013/10/26/faster-sql-paging-with-jooq-using-the-seek-method/

  9. REST API Design: Filtering, Sorting, and Pagination https://www.moesif.com/blog/technical/api-design/REST-API-Design-Filtering-Sorting-and-Pagination/

  10. Best practices for REST API design https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/

PostgreSQL数据分页相关推荐

  1. Case Study: 利用JS实现数据库网页的数据分页、数据选择、数据详细信息查看功能

    一.目标 该笔记的目的是引导读者借助WampServer平台和MySQL数据库,利用HTML/CSS/JS/PHP设计一个能够进行实现数据分页显示.数据选择.数据详细信息查看功能的数据库网页.该数据库 ...

  2. ASP.NET 数据分页第三篇 - 结合 Custom Control 处理 GridView 的 UI 呈现

     延续本系列前两篇帖子「ASP.NET 数据分页第一篇 - 探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数」.「ASP.NET 数据分页第二篇 - 范例下载」,本系列的 ...

  3. Sql Server 数据分页

    Sql Server 数据分页 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定量的数据,这就是数据要分页. ...

  4. 用存储过程实现数据分页

    参考:http://blog.csdn.net/wellknow/archive/2004/07/29/55167.aspx 用的是NOT IN 的方法 /**//****************** ...

  5. ajax往CJJTable传值,jQuery+ajax怎么样实现动态数据分页

    这次给大家带来jQuery+ajax怎么样实现动态数据分页,用jQuery+ajax实现动态数据分页的注意事项有哪些,下面就是实战案例,一起来看一下. 用jQuery实现页码跳转式动态数据分页这个效果 ...

  6. JSP连接SQL数据库实现数据分页显示

    <%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java& ...

  7. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页复制本页链接opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例.第一种:利用Page类和limit方法$U ...

  8. MVC3.0 Razor实现Ajax数据分页

    数据分页一只是一个老生常谈的问题,只要是做系统开发,一般都会牵扯到.最新学习了Razor,用到分页功能,分享下如何实现Ajax分页. 1.准备工作 网上有现成的分页工具MVCPager,最新的是1.5 ...

  9. Android复习07【创建数据库、insert()插入数据、查看数据库、根据列索引获取参数值、根据列名-返回索引、增删改查数据、数据分页、修改表结构、Room框架】

    2020-04-09-星期四-第八周 目   录 创建数据库 insert()方法 查看数据库(Save as保存) 菜鸟教程---SQLite数据库 根据 列索引 获取 参数值 列比较多---根据列 ...

最新文章

  1. kali 安装java jdk
  2. Redis的过期机制
  3. ps图片拖不进去_PS教学:你的logo还不够高大上?7步教做出黄色金属质感logo
  4. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)
  5. linux ucontext族函数的原理及使用
  6. getmenuiteminfo无法读取内存_简单科普系列—内存为什么需要组双通道原理及其作用...
  7. 解决Hbuliderx的代码不能自动补全的问题
  8. 在vue中使用html表格
  9. php如何把汉字转换为拼音,php 把汉字转换为拼音 php 如何把拼音转换汉字
  10. android:persistent属性研究
  11. MediaWiki配置
  12. tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别
  13. 忠告7 成功 = 能力 X 努力 X 态度
  14. Spring:applicationContext.xml的头文件信息
  15. 使用吉特哈布Codespaces和Visual Studio Code进行C++开发
  16. 使用蒙特卡罗法解决道填图题目
  17. element ui table表格合计移到顶部
  18. 量子计算机工作原理如何解释,量子计算机工作原理
  19. Mac下Cornerstone错误异常导致打不开
  20. GLU-Net代码的理解

热门文章

  1. λ动力学可自动、准确和扩展的计算蛋白与配体的相对结合自由能
  2. 基于通道注意机制联合多尺度卷积神经网络的滚动轴承故障诊断
  3. 用逆向设计和回归算法估算PWM
  4. centos 7安装新版本 gcc
  5. 「react-native」【记】在真机(ios和安卓)上运行example项目AwesomeProject时遇到的问题
  6. 金三银四求职季来了!分享几道最常见的app面试题,帮助您更好准备面试求职!
  7. try和catch的用法
  8. sgu-262 Symbol Recognition
  9. Java Web 用JSP实现网页登录
  10. 客户端证书与服务器证书有什么区别?