导入依赖
首先,我们需要在 Android 项目的 build.gradle 文件中添加 Room 的依赖项:
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
}
以上代码片段添加了 Room 的运行时依赖和用于编译的依赖。
定义 Entity 实体类
在开始使用 Room 之前,我们需要定义实体类以映射数据库中的表。下面是一个示例 User 实体类的定义:
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
@ColumnInfo(name = "name") val name: String,
@ColumnInfo(name = "age") val age: Int
)
上述代码片段使用 @Entity 注解将 User 类标记为数据库中的一张表。@PrimaryKey 注解表示 id 字段为主键,@ColumnInfo 注解用于指定字段在数据库中的列名。
定义 Dao 数据库访问对象接口
接下来,我们需要定义一个包含数据库访问方法的接口。以下是一个示例 UserDao 的定义:
@Dao
interface UserDao {
@Query("SELECT * FROM users")
suspend fun getAllUsers(): List<User>
@Insert
suspend fun insertUser(user: User)
@Update
suspend fun updateUser(user: User)
@Delete
suspend fun deleteUser(user: User)
}
上述代码片段使用 @Dao 注解将 UserDao 标记为一个数据访问对象接口。该接口包含了一些对用户表执行增删改查操作的方法,使用了 @Query、@Insert、@Update 和 @Delete 注解分别对应查询、插入、更新和删除操作。
定义数据库实例类
最后,我们需要定义一个继承自 RoomDatabase 的抽象类来表示数据库实例。以下是一个示例 AppDatabase 类的定义:
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
companion object {
private var INSTANCE: AppDatabase? = null
fun getInstance(context: Context): AppDatabase {
if (INSTANCE == null) {
synchronized(AppDatabase::class) {
INSTANCE = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app_database"
).build()
}
}
return INSTANCE!!
}
}
}
上述代码片段使用 @Database 注解将 AppDatabase 标记为一个数据库类,其中 entities 参数指定数据库中的表,version 参数指定数据库的版本号。
在 AppDatabase 类中,我们定义了一个抽象方法 userDao(),用于获取 UserDao 对象。getInstance() 方法使用了单例模式确保数据库实例的唯一性。
结语
通过使用 Room 框架,我们可以便捷地访问 Android 平台的 SQLite 数据库。本文介绍了 Jetpack 使用 Room 框架访问 SQLite 数据库的基本步骤,包括导入依赖、定义实体类、定义数据访问对象接口和定义数据库实例类。希望本文能够帮助你快速上手使用 Room 框架进行 Android 数据库开发。
评论 (0)