Slick 3.0 避免多重选择

Slick 3.0 avoid multiple selects

我有一个 Long 集合,对于集合中的每个元素,我必须在数据库中查找 table 并执行 select。这种方法的问题是它只发出那么多 select 并且每次打开一个新连接并且当我多次调用这个方法时,连接池很快就会耗尽!

val allIds = Seq(1,2,3,4....)

对于 allIds 中的每个 ID,我做的是:

db.run(fetchTableRowFromDb(_))

有没有更好的方法来避免给出这么多 select 语句?

您可以使用批量提取。假设你的 table class 名字是 "SampleTable" 并且 table 名字是 "sampletable".

val allIds = Seq(1,2,3,4....)
val query = TableQuery[SampleTable].filter(_.id inSet(allIds.toTraversable))
db.run(query)

以上查询类似于

select * from sampletable where id in (1,2,3....);