由网友(无所畏惧的小超人╰つ)分享简介:我有一个巧妙的表"UserSchema",如下所示:class UserSchema(tag: Tag) extends Table[User](tag, "users") {def name = column[String]("name", O.NotNull)def password = column[String...![Scala](https://p.xsw88.cn/allimgs/daicuo/20230903/4189.png)
我有一个巧妙的表"UserSchema",如下所示:
class UserSchema(tag: Tag) extends Table[User](tag, "users") {
def name = column[String]("name", O.NotNull)
def password = column[String]("password", O.NotNull)
def graduatingYear = column[Int]("graduating_year", O.NotNull)
def id = column[Int]("id", O.NotNull, O.PrimaryKey, O.AutoInc)
def * = (name, password, graduatingYear, id.?) <> (User.tupled, User.unapply)
}
我的"User"案例类如下:
case class User(name: String, password: String, graduatingYear: Int, id: Option[Int] = None)
![Scala](https://p.xsw88.cn/allimgs/daicuo/20230903/4189.png)
我在users
对象中有一个TableQuery[UserSchema]
,在db
对象中有一个数据库。
如何将以下内容转换为用户对象?
db withSession { implicit session =>
users.filter(_.id === 1)
}
目前,我有
db withSession { implicit session =>
val list = users.filter(_.id === id).list
list(0)
}
这很管用,但在我看来很难看。有没有更好的方法来做到这一点?
谢谢您的帮助。
推荐答案
list()
方法返回List[User]
,但如果您只对第一个条目感兴趣,请使用firstOption
:
db withSession { implicit session =>
val users = TableQuery[UserSchema]
val someUser: Option[User] = users.filter(_.id === id).firstOption
}
这将返回Some(User)
,否则None
,这也更安全,因为可能发生的情况是查询没有结果,调用list(0)
可能导致异常。
相关推荐
最新文章