首页 文章

Slick 2 - 结合查询

提问于
浏览
1

我想以编程方式组合查询以创建查询,从而满足所有需求 . 我可以看到有一个联合和运算符,但我看不到“交集”或** .

假设Slick FirstExample,让我们有一个代码:

val notCheap = coffees.filter(_.price>8.0)
  val notExpensive = coffees.filter(_.price<9.0)

  val midprice = coffees.filter(_.price>8.0).filter(_.price<9.0)

  println("Midprice coffees:")
  midprice foreach { case (name, supID, price, sales, total) =>
    println("  " + name + "\t" + supID + "\t" + price + "\t" + sales + "\t" + total)
  }

如何创建 notCheapnotExpensivemidprice 以便从 notCheapnotExpensive 创建 midprice 以避免代码重复?

1 回答

  • 4
    implicit class CoffeesExtensions(q: Query[Coffees, Coffee]){
      def notCheap = q.filter(_.price > 8.0)
      def notExpensive = q.filter(_.price < 8.0)
      def midprice = q.notCheap.notExpensive
    }
    
    coffees.midPrice
    

    在我们的Scala Days 2013演讲和Slick patterns talk at Scala eXchange 2013中也有关于此的信息 . http://slick.typesafe.com/docs/

相关问题