Scala Anorm-通用插入

Scala Anorm-通用插入,scala,anorm,Scala,Anorm,有没有办法像使用普通ORM一样使用Anorm?我希望有一个只插入提供的元素的方法 def insert[T](element: T)(implicit connection: Connection) = { element.insert(connection) } 我完全可以自己实现它,但感觉我正在实现一个ORM。。。旧的anorm版本有这个功能,但我现在看不到了。它清楚地表明anorm不是ORM(而且永远不会是) 同样,要插入或更新T值,必须提供ToStatementtype

有没有办法像使用普通ORM一样使用Anorm?我希望有一个只插入提供的元素的方法

  def insert[T](element: T)(implicit connection: Connection) = {
    element.insert(connection)
  }
我完全可以自己实现它,但感觉我正在实现一个ORM。。。旧的anorm版本有这个功能,但我现在看不到了。

它清楚地表明anorm不是ORM(而且永远不会是)

同样,要插入或更新
T
值,必须提供
ToStatement
typeclass的实例

  def insert[T](element: T)(implicit connection: Connection) = {
    element.insert(connection)
  }
有些人希望自动实现这样的实例

import anorm.{ Macro, SQL, ToParameterList }
import anorm.NamedParameter

case class Bar(v: Int)

val bar1 = Bar(1)

// Convert all supported properties as parameters
val toParams1: ToParameterList[Bar] = Macro.toParameters[Bar]

val params1: List[NamedParameter] = toParams1(bar1)
// --> List(NamedParameter(v,ParameterValue(1)))

val names1: List[String] = params1.map(_.name)
// --> List(v)

val placeholders = names1.map { n => s"{$n}" } mkString ", "
// --> "{v}"

val generatedStmt = s"""INSERT INTO bar(${names1 mkString ", "}) VALUES ($placeholders)"""
val generatedSql1 = SQL(generatedStmt).on(params1: _*)