我有一个以下案例类的列表
case class caseClass
(
field1: Option[String],
field2: Option[String],
field3: Option[String]
)
这些字段对应于我想要搜索的mySQL表的列 . 基本上我想过滤每个case类实例,其中field1,field2和field3之间存在AND关系,并且之间存在OR关系 . 实例 . 在SQL中它将是这样的:
SELECT
field4,
field5
FROM
tablename
WHERE
(field1 = ? AND field2 = ?) OR
(field3 = ?) OR
(field1 = ? AND field2 = ? AND field3 = ?) OR
...etc
当然,它将使用字符串连接生成,因为所有case类字段都是可选的 . 如何优雅地解决这个问题(不使用光滑的纯SQL查询)?
1 回答
我们想出了如何基于this answer来解决这个问题
我无法弄清楚如何基于Rep [Option [Boolean]]表达式(这是元组的第一部分)进行过滤,所以我想我将列表列为元组列表,其中第二部分是参数CaseClass . 并且很容易过滤普通的Option [_] .