一、简介
本文主要说明了如何组合使用Room、LiveData、ViewModel来进行数据的持久化存储
二、具体步骤
1. Room数据库的使用
Room主要包含三个组件:
- Database:其中包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点
- Entity:用于表示数据库中的表
- Dao:包含用于访问数据库的方法
其中三个组件的关系如下图所示(摘自Android开发者官网)
添加依赖
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
dependencies {
// Room数据库依赖
def room_version = "2.2.6"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// 协程依赖
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.0'
//LiveData和ViewModel依赖
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
}
创建实体类
@Entity
data class Record(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val title: String,
val content: String)
使用id作为主键,令其默认值为0,这样在插入数据库时会自动为其赋值
创建Dao接口
@Dao
interface RecordDao {
@Query("select * from record where title = :title")
fun getAllRecordsByTitle(title: String)