[译] 从 SQLite 逐步迁移到 Room
// 假设我们有一个简单的用户实体和DAO
@Entity
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
@Insert
fun insertAll(vararg users: User)
// 假设还有其他需要的DAO方法
}
// 现在我们可以开始迁移到Room,首先需要添加Room依赖
implementation "androidx.room:room-runtime:2.2.5"
annotationProcessor "androidx.room:room-compiler:2.2.5"
// 然后定义数据库和DAO
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
// 使用数据库
val db = Room.databaseBuilder(appContext, AppDatabase::class.java, "database-name").build()
val userDao = db.userDao()
这个例子展示了如何定义一个简单的Room数据库和DAO。在实际的应用中,你需要根据自己的需求来扩展这个例子,比如添加数据库迁移策略、处理并发和线程、错误处理等。
评论已关闭