加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读