专栏首页让技术和时代并行一次搞懂滚动加载

一次搞懂滚动加载

分页加载通常适用于客户端,通常是为了防止一次返回导致客户端崩溃,所以采用下拉加载更多的方式,为了防止数据重复的现象,数据传递建议使用唯一标识id。 普通的下拉加载方式 对于普通的下拉加载我们通常处理方式分为以下步骤: 1 客户端传递请求数目大小和上一次请求最后一条数据的id或者时间(如果是第一次请求则可以不传递) 2 对于后端按照终端请求的id或者时间进行某种特定次序排列,取固定数目返回给终端。由此便可以保证终端每次获取到正确数据

核心sql查询语句

SELECT * FROM admin  WHERE id < 10000 ORDER BY id DESC LIMIT 1, size

具体定义的数据结构

 # 接口地址/scroll/list

# 请求方式HTTP  GET
# 入参{    "size":10,//请求大小    "id":1 //返回数据最后一条id }# 出参# 成功
{  "flag": 1,  "result": {    "hasMore": ture, //是否有更多数据    "total": 68,    "list": [      {          "id":1, //文件Id          "desc":"描述", //可以为空          "name":"David"      },      {          "id":2, //文件Id          "desc":"描述", //可以为空          "name":"Tom"      },      ...    ]  }}
#失败{  "flag":0,  "result":"错误信息"}

对于包含特定条件次序的分页加载的处理方式 比如说,项目要求已经置顶的数据的排列在所有数据的最前面(当然置顶数据的id可能比较小)那么就需要先按照置顶排序、id排序,然后查询数据(对于查询数据,则要根据不同的条件进行不同的处理)。 核心sql查询语句

SELECT * FROM admin  WHERE #if(id!=null && state==2) ((id < 21 AND state=2) OR state != 2)) #elseif(id!=null && state!=2) id < 23 ORDER BY FIELD(state,2) DESC, id DESC LIMIT 1, size

具体定义的数据结构

 ## 接口地址
/scroll/list```
## 请求方式HTTP GET
## 入参{    "size":10,//请求大小    "id":1 //返回数据最后一条id,第一次请求不用传递    "state":2 //返回最后一条数据的状态信息,第一次请求不用传递   }## 出参### 成功{  "flag": 1,  "result": {    "hasMore": ture, //是否有更多数据    "total": 68,    "list": [      {          "id":1, //文件Id          "desc":"描述", //可以为空          "name":"David",          "state":1      },      {          "id":2, //文件Id          "desc":"描述", //可以为空          "name":"Tom",          "state":2      },      ...    ]  }}### 失败{  "flag":0,  "result":"错误信息"}

总结

第二种情况在项目中比较常见,不同的排序条件可能会导致数据的遗漏。故在分页加载过程中要考虑多种情况以及状态判断,做到不重不漏。

添加关注第一时间收到通知

原创不易,如果觉得有用,可以随手转发或者”在看“

本文分享自微信公众号 - 云原生技术爱好者社区(gh_64358c8a941d),作者:半夏透心凉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hibernate 关联映射(2)

    <mapping resource="com/nerd/entity/Person.hbm.xml"/>

    用户5166556
  • 终究,还是要为技术债务交税

    如果有一天技术老大告诉管理层,最近两周应用不会发布任何新特性,所有技术人员要投入到重构、自动化工作、非功能性需求以及架构优化保证服务的可扩展性、可运维性、可测试...

    用户5166556
  • Java线程池应用

    2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大...

    用户5166556
  • TP踩过的坑【批量删除,(不涉及子栏目的批量删除)】

    简单、
  • [PHP] RBAC权限与审批流的简单数据库构想

    陶士涵
  • uni-app弹窗多选样式分享

    薛定喵君
  • 分布式系统中生成全局ID的总结与思考

    世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样)。又如中国人,每个中国人有自己的身份证。对于...

    用户1263954
  • django开发个人简易Blog——数据模型

    提到数据模型,一定要说一下MVC,MVC框架是现代web开发中最流行的开发框架,它将数据与业务逻辑分开,减小了应用之间的高度耦合。个人非常喜欢MVC开发框架,除...

    古时的风筝
  • 通过错误的sql来测试推理sql的解析过程(二) (r8笔记第7天)

    之前总结过一篇 通过错误的sql来测试推理sql的解析过程 也算是以毒攻毒,当然也分析出来一些有意思的内容来,让原本看起来枯燥的内容有了更多的实践意义。 ...

    jeanron100
  • mysql修改自增起始值

    A表带自增键,B表不带,通过程序从A表同步数据到B表,同步完成后会通过delete删除A表数据,今天插入B表会出现duplicate primary key问题...

    陈平安

扫码关注云+社区

领取腾讯云代金券