Вставка нескольких значений и полей в таблицу с анормой

Я нашел этот ответ, который решает одно поле -> Вставка нескольких значений в таблицу с анормой

   var fields: List[String] = Nil
var values: List[(String,ParameterValue[_])] = Nil

for ((username,i) <- usernames.zipWithIndex) {
  fields ::= "({username%s})".format(i)
  values ::= ("username" + i, username)
}

SQL("INSERT INTO users (username) VALUES %s".format(fields.mkString(",")))
  .on(values: _*)
  .executeUpdate()

Как я могу передать больше полей, таких как имя пользователя, адрес, номер телефона и т. Д.?

Я старался...

 def create(names: List[(String,ParameterValue[_])] ,addresses :List[(String,ParameterValue[_])]){

   var fields: List[String] = Nil;

   for((a,i) <- names.zipWithIndex){
      fields ::= "({name%s},{address%s})".format(i)
   }
           DB.withConnection { implicit c =>

           SQL("insert into table (name,address) values  %s".format(fields.mkString(",")))
          .on(names: _*, addresses: _*)
          .executeUpdate()
           }
 }

Я получаю следующую ошибку: "нет"_ *"аннотации разрешены здесь"

Если бы я мог использовать один список для всех параметров, это было бы еще лучше.

1 ответ

Вы в основном хотите выполнить пакетную вставку. Вот адаптация, взятая из документов:

import anorm.BatchSql

val batch = BatchSql(
  "INSERT INTO table (name, address) VALUES({username}, {address})", 
  Seq(names, addresses)
)

val res: Array[Int] = batch.execute() // array of update count
Другие вопросы по тегам