ScalikeJdbc多个插入

时间:2015-07-01 19:17:28

标签: scala orm scalikejdbc

我们如何在同一交易中执行多次插入?

  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

1 个答案:

答案 0 :(得分:2)

像这样修改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))
}