Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ScalaQuery进行分页查询?_Scala_Scalaquery - Fatal编程技术网

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

如何使用ScalaQuery进行分页查询?,scala,scalaquery,Scala,Scalaquery,我有一个查询,返回用于从数据库获取一页结果的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, sta

我有一个查询,返回用于从数据库获取一页结果的
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)
}
def页面(页码:Int,页面大小:Int):Seq[Person]=database.withSession{
val query=for(person建议使用正常的Scala收集方法,如
drop
take
。这些方法将有效地处理JDBC结果集。它还将适当的
LIMIT
OFFSET
添加到查询中

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

请注意,您需要导入一个特定的驱动程序隐式来完成此操作。有关驱动程序名称的列表,请参阅的末尾。

您可以显示您的导入吗?我遇到一个问题,要求我使用
take(Int)
,但编译器说它不是成员。。。