我有以下代码,它将行插入名为luczekInfo的表中,并使用函数从数据库中获取数据.我的问题是如何使函数更新表luczekInfo中的列,由get(id)函数返回的行.在Slick中更新列值的最佳方法是什么?
def create(profil: luczekInfo): Either[Failure, luczekInfo] = {
try {
val id = db.withSession {
LuczekInfo returning LuczekInfo.id insert profil
}
Right(profil.copy(id = Some(id)))
} catch {
case e: SQLException =>
Left(databaseError(e))
}
}
def get(id: Int): Either[Failure, luczekInfo] = {
try {
db.withSession {
LuczekInfo.findById(id).firstOption match {
case Some(profil: luczekInfo) =>
Right(profil)
case _ =>
Left(notFoundError(id))
}
}
} catch {
case e: SQLException =>
Left(databaseError(e))
}
}
Run Code Online (Sandbox Code Playgroud)
提前感谢您的回答.
End*_*Neu 22
光滑2.X
您可以通过两种方式更新行(据我所知),第一种方法是创建类型的行对象luczekInfo#TableElementType并使用它来更新整行:
def updateById(id: Long, row: luczekInfo#TableElementType)(implicit s: Session): Boolean =
luczekInfo.filter(_.id === id).update(row)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用以下方法更新单个字
def updateNameById(mId: Long, mName: String)(implicit s: Session) = {
val q = for { l <- luczekInfo if l.id === mId } yield l.name
q.update(mName).run
}
Run Code Online (Sandbox Code Playgroud)
我认为你的表有一个名为的文件name.
您也可以在Slick文档的更新部分找到它.
光滑3.1.X
对insertOrUpdate(upsert)操作有额外的支持:
luczekInfo.insertOrUpdate(row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14266 次 |
| 最近记录: |