Room 是 Android 开发中用于简化 SQLite 数据库操作的库,它基于 Dagger 的注解处理器,提供编译时的数据库验证和对 LiveData 的支持。以下是 Room 的核心用法与最佳实践:
🌐 1. Room 的核心概念
Database
通过@Database
注解定义数据库,需指定entities
和version
。Entity
用@Entity
注解标记数据表,字段类型需与 SQLite 数据类型兼容。DAO
@Dao
接口定义数据库操作方法,支持@Query
、@Insert
等注解。
🛠 2. 快速入门步骤
添加依赖
在build.gradle
中引入 Room 相关库:implementation "androidx.room:room-runtime:2.5.2" annotationProcessor "androidx.room:room-compiler:2.5.2"
创建实体类
例如定义一个User
实体:@Entity(tableName = "users") data class User( @PrimaryKey val id: Int, val name: String, val age: Int )
构建 DAO 接口
定义数据访问方法:@Dao interface UserDao { @Query("SELECT * FROM users") fun getAllUsers(): List<User> @Insert fun insertUser(user: User) }
创建数据库类
继承RoomDatabase
并绑定 DAO:@Database(entities = [User::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
使用数据库
在ViewModel
或Repository
中通过Database
实例操作数据:
📈 3. Room 的优势
- 编译时 SQL 验证,避免运行时错误
- 支持 LiveData 与协程
- 自动处理数据库迁移
- 代码简洁,减少手动操作
📚 扩展阅读
如需深入了解 Room 的高级特性(如多数据库支持、类型转换器),可访问 Room 高级指南 获取更多示例。