1.gradle引用

def room_version = "2.2.6"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
//optional 
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'

2.创建数据模型

Java
@Entity()
public class User {
    @PrimaryKey(autoGenerate = true)
    public int id;
    public String firstName;
    public String lastName;
}

3.创建 Dao

@Dao
interface UserDao {
    @Query("SELECT * FROM User")
    suspend fun getAll(): List<User>

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(user: User)
}

4.创建database

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {

    companion object {
        @Volatile
        private var INSTANCE: AppDatabase? = null
        fun getDatabase(context: Context): AppDatabase {
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    AppDatabase::class.java,
                    "word_database"
                ).build()
                INSTANCE = instance
                // 返回实例
                instance
            }
        }
    }

    abstract fun userDao(): UserDao


}

5.使用

val user = User()
user.firstName = "huangwei"

launch {
    val userDao = db.userDao()
    val all = userDao.getAll()
    Log.d("hwhw", "all.size==" + all.size)
    userDao.insert(user)
    val allEnd = userDao.getAll()
    Log.d("hwhw", "allEnd.size==" + allEnd.size)
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐