scala – 用于任意列的Slick查询过滤器
发布时间:2020-12-16 19:23:23 所属栏目:安全 来源:网络整理
导读:假设我有一个包含x和y列的SQL表,每个整数值都有.我可以做一个Slick查询来选择5 = x = 10,如下所示: val myQuery = TableQuery[MyXYTable]myQuery.filter(p = p.x = 5 p.x = 10) 现在假设我想同时过滤5 = y = 10.我想重复使用相同的过滤器逻辑,但这次将它应
假设我有一个包含x和y列的SQL表,每个整数值都有.我可以做一个Slick查询来选择5< = x< = 10,如下所示:
val myQuery = TableQuery[MyXYTable] myQuery.filter(p => p.x >= 5 && p.x <= 10) 现在假设我想同时过滤5< = y< = 10.我想重复使用相同的过滤器逻辑,但这次将它应用于y列.有没有办法在Slick中做到这一点?即编写一个过滤函数,并传入一个参数,指定它应该过滤哪一列?所以我有类似的东西: myQuery.addFiveTenFilter(x-column).addFiveTenFilter(y-column) 如果我正在编写原始SQL,这将是非常简单的,但我无法看到如何使用Slick语法. 解决方法
如果您创建Rep [Int] =>类型的函数Rep [Boolean],您可以在过滤方法中使用它并传递列:
// As a function literal. val filterByFiveTen: (Rep[Int] => Rep[Boolean]) = { column => column >= 5 && column <= 10 } myQuery.filter(row => filterByFiveTen(row.xColumn)) // As a method. def filterByFiveTen(column: Rep[Int]): Rep[Boolean] = { column >= 5 && column <= 10 } myQuery.filter(row => filterByFiveTen(row.xColumn)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |