如何使用Ebean实现基于游标的分页

时间:2018-08-29 23:03:19

标签: java sql ebean

目标是使用Ebean加载从数据库分页的行。假设我们要打印“ 10000行到1行到10行”。

通常,这需要两个查询。一个用于获取所有记录的计数,另一个用于获取实际行,并遵守keyword参数。

Ebean像这样处理这种双查询方法:

limit

很明显,Ebean的构建器必须应用所有查询条件,然后克隆该构建器,并使用PagedList<User> result = query.findPagedList(); result.getTotalCount(); // gives 10000 result.getList(); // gives the page of rows 完成一个版本,而使用limit完成另一个版本。

考虑到基于偏移量/限制的分页,这很好用。现在,我正在研究基于光标的分页。为了简洁地传达设计,请参阅https://stackoverflow.com/a/49612308/2694806作为参考。

请注意,该方法需要一个唯一+有序+不可变的字段,我们将通过说count向查询添加“光标”。自然,这会向Ebean的查询构建器添加一个where column < cursor条件。

问题在于,此where准则显然会歪曲where的值。

前进的方向:

  1. 发现Ebean有解决此问题的聪明方法
  2. 滚动我自己的“双查询”系统来处理此错误
  3. 发现我的方法根本上是错误的

0 个答案:

没有答案