我目前正在使用 Play 框架在 Scala 中开发一个小型应用程序,我想保留用户所做的操作列表。是否可以像我一样使用 Anorm 存储简单的 id 列表(List[Long])?
否则,我还能用什么来让它工作呢?我是否需要使用 Scala Play! Using anorm or ORM 中解释的 ORM ?
最佳答案
如果您正在谈论持久化到 SQL 数据库,那么 Anorm 当然可以为您处理。
在最基本的层面上,您可以在 SQL 数据库中创建一个长整数表,然后使用 Anorm 来保存您的列表。假设您将整数存储在名为 UserActions
的单列表中,其唯一列名为 action
:
def saveList(list: List[Long]) = {
DB.withConnection { implicit connection =>
val insertQuery = SQL("insert into UserActions(action) values ({action})")
val batchInsert = (insertQuery.asBatch /: list)(
(sql, elem) => sql.addBatchParams(elem)
)
batchInsert.execute()
}
}
我为您整理了一个小演示,并将其推送到 Heroku,我将很快更新链接(编辑:Heroku 和我今晚相处不好,抱歉)。
代码位于我的 Github 中:https://github.com/ryantanner/anorm-batch-demo
查看 models/UserActions.scala 以专门查找该片段。其余的只是一些废话,以使演示更有趣。
现在,我想退后一步,问自己需要哪些有关这些用户操作的信息。从语义上讲,List[Long] 意味着什么?您是否需要存储有关这些用户操作的更多信息?它实际上应该类似于(UserID、PageVisited、Timestamp)行吗?
关于scala - 使用 Play 框架和 Anorm 保留列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511109/