不同表上的相同查询 - Scala Slick

Same query on different tables - Scala Slick

我试过在 Scala 中消除重复代码,但没有成功。

我有:

(table.filter(someFilters).map(columns).result map { res =>
 res foreach { case (data1, data2, data3) =>
 //some logic
}}) >>
(differentTable.filter(sameFilters).map(sameColumns).result map { res =>
 res foreach { case (data1, data2, data3) =>
 //other logic
}})

return 类型是 DBIOAction

如何不复制此代码并根据 table 的类型执行逻辑?

*两个table之间没有关系

也许你可以在这里做一件事。

 val table1 = TableQuery[Table1]
 val table2 = TableQuery[Table2]

假设您 table 键入 T

def  findAll[T](table: T)  = {
   (table.filter(someFilters).map(columns).result map { res =>
   res foreach { case (data1, data2, data3) =>
    //some logic
  }}) 
  } 

由于您的 findAll 采用通用 table 名称并且您提到所有列都相同,那么调用 findAll 如下所示:

     findAll[Table1](table1) 
     findAll[Table2](table2) 

希望对您有所帮助