Phoenix分页实现

Phoenix的分页实现主要是运用 Phoenix 中的 Row Value Constructors (RVC)
用其作为判定条件,用Limit进行页面大小的控制;
前台界面只需返回当前界面的第一行,和最后一行数据的主键,作为下一页,上一页的判定条件即可;

第一页:

由于phoenix中的记录默认顺序排序,第一页直接从头取固定行数即可;
select * from table limit pageSize;

下一页:

在MySql中,我们可以使用
limit startRow, pageSize
这样的控制条件来实现分页;

但是在phoenix中并没有这样简便的支持,官网上说支持 offset ,但是亲测并无卵用,不知道是什么原因。
因此,使用 RVC+limit 这样的形式自己来进行分页;
在取得第一页记录后,将最后一条数据主键返回后台作为下一页的起始行;
select * from table where (k1,k2, k3) > (v1, v2, v3) limit pageSize;

上一页:

开始我想上一页的查询,直接将 大于号, 换成 小于号
但是返回的结果是从头开始的 pageSize 条;

因此进行倒序查询;
但是作为判定条件的上边界也在返回的结果中;

因此原始页面的第一条数据与其上一页的最后一条数据重复了,我们需要在上一页的查询中多查询一条,并将多余的那行隐藏;

SELECT * FROM table WHERE (k1, k2, k3) < (v1, v2, v3) ORDER BY  k1 desc limit pageSize+1;







posted @ 2017-03-07 12:17  -Mario-  阅读(1109)  评论(0编辑  收藏  举报