不同表上的相同查询 - 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)
希望对您有所帮助
我试过在 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)
希望对您有所帮助