gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:03:27 25 4
gpt4 key购买 nike

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

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在结果列表中。

最佳答案

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

Scala 集合上的操作管道可能看起来只是过滤实际数据,但正如您在此处所看到的,信息也可以返回管道以提高整体计算效率。

示范:

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获取驱动程序名称列表。

关于scala - 如何使用 ScalaQuery 进行分页查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8150924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com