我有一个Long的集合,对于集合中的每个元素,我必须在数据库中查找一个表并进行选择。这种方法的问题在于,它只是发出了许多选择,并且每次打开新连接时,当我多次调用此方法时,连接池都会很快耗尽!
val allIds = Seq(1,2,3,4....)
对于allIds中的每个id,我这样做:
db.run(fetchTableRowFromDb(_))
有没有更好的方法来避免提供这么多的选择陈述?
答案 0 :(得分:1)
您可以使用批量提取。假设您的表类名是“SampleTable”,表名是“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....);