我正在使用ScalaPlay!Anorm的框架将数据模型持久保存到数据库中。我在这里遵循示例代码:
case class Bar(id: Pk[Long], name: String) object Bar { val simple = { get[Pk[Long]]("id") ~ get[String]("name") map { case id~name => Bar(id, name) } } def findAll(): Seq[Bar] = { DB.withConnection { implicit connection => SQL("select * from bar").as(Bar.simple *) } } def create(bar: Bar): Unit = { DB.withConnection { implicit connection => SQL("insert into bar(name) values ({name})").on( 'name -> bar.name ).executeUpdate() } } }
尝试对其进行扩展,我想检索刚刚创建的主键并将其存储在case类中。
如何检索主键?
使用executeInsert方法代替executeUpdate。注意这里,所述foremer方法返回Option[T]其中T是主键的类型。
executeInsert
executeUpdate
Option[T]
T
您可以使用以下match语句提取值:
match
DB.withConnection { implicit connection => SQL(...).executeInsert() } match { case Some(long) => long // The Primary Key case None => ... }