如何批量插入在scala slick中使用纯SQL?

这是我在普通SQL中进行批处理插入的方法,这有点麻烦.

db withSession {
  (Q.u + "insert into customer (id, name, address) values " +
    users.map(toSql).mkString(",")).execute()
}

def toSql(user: User): String = "(%d, '%s', '%s')".format(user.id, user.name, user.address)

我想知道有没有更好的方法在纯SQL中进行批量插入/更新?我不是提升或直接嵌入的忠实粉丝,对我来说似乎是Hibernate-ish.

最佳答案
您可以使用SetParameter作为Medina在邮件列表中指出的(我问过类似的问题):

import slick.jdbc.SetParameter
import slick.jdbc.PositionedParameters 

val params = Seq("foo", "bar", "baz")
implicit object SetSqlParamList extends SetParameter[Seq[String]] {
  override def apply(values: Seq[String], pp: PositionedParameters): Unit = values.foreach(v => pp.setString(v))
}

StaticQuery.query[List[String], User](
  s"""SELECT * FROM foo WHERE bar IN (${params.map(_ => "?").mkString(",")})"""
).list(params)

https://groups.google.com/d/msgid/scalaquery/cd028e33-42e8-4a26-85fc-e3b1b700e1f6%40googlegroups.com?utm_medium=email&utm_source=footer

转载注明原文:如何批量插入在scala slick中使用纯SQL? - 代码日志