首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ScalaQuery进行分页查询?

如何使用ScalaQuery进行分页查询?
EN

Stack Overflow用户
提问于 2011-11-16 19:27:55
回答 1查看 2.4K关注 0票数 11

我有一个返回Person对象的查询,我使用该对象从数据库中获取一页结果:

代码语言:javascript
复制
def page(pageNumber:Int, pageSize:Int) : Seq[Person] = database.withSession {
  val query = for(person <- People) yield person.mapped
  val startIndex = (pageNumber - 1) * pageSize
  query.list.slice(startIndex, startIndex + pageSize)
}

这是可行的,但是我想知道我是否可以像使用javax.persistence.Query API的setFirstResultsetMaxResults方法一样在数据库中进行分页,而不是在结果列表上使用slice

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-16 19:50:49

tests建议使用普通的Scala集合方法,如droptake。这些将有效地处理JDBC ResultSet。它还将适当的LIMITOFFSET添加到查询中。

Scala集合上的操作管道可能看起来只是在过滤实际数据,但正如您在这里看到的那样,信息也可以沿管道反向传输,从而使整个计算更高效。

演示:

代码语言:javascript
复制
scala> import org.scalaquery.ql.extended.PostgresDriver.Implicit._
import org.scalaquery.ql.extended.PostgresDriver.Implicit._

scala> val q1 = Entities.map { e => e }.drop(10).take(10)
q1: org.scalaquery.ql.Query[models.Entities.type] = Query

scala> q1.selectStatement
res5: String = SELECT "t1"."guid","t1"."foo","t1"."bar" FROM "entities" "t1" LIMIT 10 OFFSET 10

请注意,您需要导入一个特定的驱动程序隐含,以使此工作。有关驱动程序名称的列表,请参阅getting started guide末尾。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8150924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档