MST

星途 面试题库

面试题:Kotlin中Room持久化库的基本使用

在Kotlin项目中使用Room持久化库时,简述创建数据库、实体类以及数据访问对象(DAO)的基本步骤,并举例说明实体类中如何定义主键。
23.4万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

创建数据库步骤

  1. 添加依赖:在build.gradle文件中添加Room相关依赖,如:
implementation "androidx.room:room-runtime:2.4.3"
annotationProcessor "androidx.room:room-compiler:2.4.3"
  1. 定义数据库类:继承RoomDatabase,并使用@Database注解。例如:
import androidx.room.Database
import androidx.room.RoomDatabase

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}
  1. 获取数据库实例:通过Room.databaseBuilder()方法构建数据库实例,通常在应用的Application类中进行初始化。例如:
class MyApp : Application() {
    companion object {
        lateinit var database: AppDatabase
    }

    override fun onCreate() {
        super.onCreate()
        database = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java,
            "app_database"
        ).build()
    }
}

创建实体类步骤

  1. 定义类:创建一个普通的Kotlin类来表示数据库中的表。
  2. 使用@Entity注解:标记该类为实体类。例如:
import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity
data class User(
    @PrimaryKey
    val id: Int,
    val name: String,
    val age: Int
)

创建数据访问对象(DAO)步骤

  1. 定义接口:创建一个接口,用于定义数据库操作方法。
  2. 使用@Dao注解:标记该接口为DAO。例如:
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query

@Dao
interface UserDao {
    @Insert
    suspend fun insert(user: User)

    @Query("SELECT * FROM User")
    suspend fun getAllUsers(): List<User>
}

实体类中定义主键

在实体类中,使用@PrimaryKey注解标记类中的某个属性作为主键。如上述User实体类中,id属性被标记为@PrimaryKey,表示它是User表的主键。若主键自增长,可以使用@PrimaryKey(autoGenerate = true)。例如:

import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity
data class User(
    @PrimaryKey(autoGenerate = true)
    val id: Int,
    val name: String,
    val age: Int
)