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 回答