Room
procedure
add dependencies
deal with data layer
- 设计实体类
- 设计 Dao 接口
- 创建 database
- 为 database 这个数据源创建 repository
deal with Dependency injection
- 创建 container (很多个repository)
- 创建 application (主要是把 context 传给 container)
- 在 android manifest 里 注册 application
deal with viewModel
从 repository 获取数据
more complex data
考虑下面这种情况: 我们正在构建一个聊天机器人,每一个用户都有属于自己的聊天记录。那么我们要如何存储用户的聊天记录呢? 你可能会这么想:
data class User {
val id: Int,
val name: String,
val password: String,
val message: Message
}
但是 message 这个自定义类是存不进数据库中的,那我们要怎么解决这个问题呢? 可以共用一个主键 id, 令 id 同时为 User 和 Message 的主键
data class Message {
val id: Int // same as User
val history: List<String>
}
<++>
@Database(
entities = [Message::class, User::class, Config::class],
version = 6,
exportSchema = false
)