我有两个Option
:
val name: Option[String] = ...
val shared: Option[Boolean] = ...
如果上述值是,我想构建一个UPDATE
查询这些字段,但如果它们是,则保持它们不变。SET
Some
None
我已经设法做到了这一点,但我不太热衷于检查逗号,如果我需要添加额外的列,它不会按比例缩放。我也不太热衷于使用var
.
var query = Q.u + "UPDATE wishlist SET"
if(name.isDefined) query = query + " name = " +? name + (if (share.isDefined) ", " else "")
if(shared.isDefined) query = query + " shared = " +? share
如果我不关心 SQL 注入,我可以执行以下操作:
val fields = List(
name.map(n => s"name = '$n'"),
shared.map(e => s"shared = $e")
).flatten
s"UPDATE wishlist SET ${fields.mkString(", ")}"
问题:有没有更好的方法来使用 Slick 的普通 SQL/String 插值来做到这一点,或者是我唯一的选择来提升嵌入式?