首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anorm -泛型插入

Anorm -泛型插入
EN

Stack Overflow用户
提问于 2020-11-13 09:09:50
回答 1查看 33关注 0票数 0

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

代码语言:javascript
复制
  def insert[T](element: T)(implicit connection: Connection) = {
    element.insert(connection)
  }

我当然可以自己实现,但我觉得我在重新实现一个ORM.旧的anorm版本有这个Magic[T],但我现在看不见了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 10:12:49

文档明确指出Anorm不是ORM (而且永远不会是)。

作为指示性,要插入或更新T值,必须提供ToStatement类型类型的实例。

一些提供宏会自动实现这样的实例。

代码语言:javascript
复制
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: _*)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64818160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档