在Kotlin中使用Room数据库预填充数据,你需要执行以下步骤:
build.gradle
文件中添加相应的依赖项。implementation "android.arch.persistence.room:runtime:1.4.0"
kapt "android.arch.persistence.room:compiler:1.4.0"
User
类来表示用户对象。@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
@Dao
interface UserDao {
@Insert
fun insert(user: User)
@Query("SELECT * FROM users")
fun getUsers(): List
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
RoomDatabase.Callback
类,在onCreate
方法中执行预填充数据的操作。class DatabaseCallback(private val userDao: UserDao) : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
// 在这里进行预填充数据的操作
val users = mutableListOf()
users.add(User(1, "John", 25))
users.add(User(2, "Jane", 30))
GlobalScope.launch(Dispatchers.IO) {
userDao.insert(users)
}
}
}
Application
类中初始化Room数据库,并将DatabaseCallback
传递给它。class MyApp : Application() {
override fun onCreate() {
super.onCreate()
val database = Room.databaseBuilder(this, AppDatabase::class.java, "my-db")
.addCallback(DatabaseCallback(userDao))
.build()
}
}
现在,当你第一次运行应用程序时,Room数据库将会自动执行预填充数据的操作。你可以在其他地方使用UserDao
接口来查询这些数据。
val users = userDao.getUsers()
这样,你就成功地在Kotlin中使用Room数据库进行了数据预填充。