1

同じトランザクションで複数の挿入を実行するにはどうすればよいですか?

  def insertData(dataList: List[Data])(implicit session: DBSession = autoSession) = {

    // todo: this is probably opening and closing a connection every time?
    dataList.foreach(data => insertData(data))
  }

  def insertData(data: Data) = withSQL {
    val t = DataTable.column
    insert.into(DataTable).namedValues(
      d.name -> data.name,
      d.title -> data.title
    )
  }.update().apply()

これらの数が数千を超える場合、挿入ごとに異なるトランザクションを使用するのは効率的ではありません。

http://scalikejdbc.org/documentation/operations.html

4

1 に答える 1

3

次のように insertData メソッドを変更します。

def insertData(data: Data)(implicit session: DBSession = AutoSession) = withSQL {
  val t = DataTable.column
  insert.into(DataTable).namedValues(
    d.name -> data.name,
    d.title -> data.title
  )
}.update().apply()

次に、DB.localTx を使用します。

DB.localTx { implicit s =>
  dataList.foreach(data => insertData(data))
}
于 2015-07-27T08:20:34.917 に答える