Room系列专题
引用
12345678910
// Room componentsimplementation "androidx.room:room-runtime:2.2.0-rc01"
annotationProcessor "androidx.room:room-compiler:2.2.0-rc01"
// kotlin扩展和协程支持implementation "androidx.room:room-ktx:2.2.0-rc01"
//RxJava 支持库implementation "androidx.room:room-rxjava2:2.2.0-rc01"
// 可选 - Guava 的支持库implementation "androidx.room:room-guava:2.2.0-rc01"
基本使用
Room 主要包含三个组件:
Database: 包含数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。这个类需要用 @Database 注解,并满足下面条件:
必须是继承 RoomDatabase 的抽象类
注解中包含该数据库相关的实体类列表
包含的抽象方法不能有参数,且返回值必须是被 @Dao 注解的类
Entity: 表示了数据库中的一张表
DAO: 包含了访问数据库的一系列方法
简单使用流程
0.配置编译器选项
如果不配置,编译就会报错。
Room具有以下注释处理器选项:
room.schemaLocation:配置并启用将数据库模式导出到给定目录中的JSON文件中。
room.incremental:启用Gradle增量注释处理器。
room.expandProjection:将Room配置为重写查询,以使其顶部的星形投影扩展为仅包含DAO方法返回类型中定义的列。
代码配置如下:
1234567891011121314
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [
"room.schemaLocation":"$projectDir/schemas".toString(),
"room.incremental":"true",
"room.expandProjection":"true"]
}
}
}
}
1.创建模型类
123456789101112131415161718192021222324252627282930
@Entity(tableName