Room 是 Android 开发中用于简化 SQLite 数据库操作的库,它基于 Dagger 的注解处理器,提供编译时的数据库验证和对 LiveData 的支持。以下是 Room 的核心用法与最佳实践:


🌐 1. Room 的核心概念

  • Database
    通过 @Database 注解定义数据库,需指定 entitiesversion

    room_database
  • Entity
    @Entity 注解标记数据表,字段类型需与 SQLite 数据类型兼容。

    room_table
  • DAO
    @Dao 接口定义数据库操作方法,支持 @Query@Insert 等注解。

    room_dao

🛠 2. 快速入门步骤

  1. 添加依赖
    build.gradle 中引入 Room 相关库:

    implementation "androidx.room:room-runtime:2.5.2"
    annotationProcessor "androidx.room:room-compiler:2.5.2"
    
  2. 创建实体类
    例如定义一个 User 实体:

    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String,
        val age: Int
    )
    
  3. 构建 DAO 接口
    定义数据访问方法:

    @Dao
    interface UserDao {
        @Query("SELECT * FROM users")
        fun getAllUsers(): List<User>
        @Insert
        fun insertUser(user: User)
    }
    
  4. 创建数据库类
    继承 RoomDatabase 并绑定 DAO:

    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    
  5. 使用数据库
    ViewModelRepository 中通过 Database 实例操作数据:

    room_usage

📈 3. Room 的优势

  • 编译时 SQL 验证,避免运行时错误
  • 支持 LiveData 与协程
  • 自动处理数据库迁移
  • 代码简洁,减少手动操作

📚 扩展阅读

如需深入了解 Room 的高级特性(如多数据库支持、类型转换器),可访问 Room 高级指南 获取更多示例。