我们如何在同一交易中执行多次插入?
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()
如果每个插入的编号都是数千及以上,那么为每个插入创建一个不同的事务是没有效率的。
答案 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))
}