1.首先在app.gradle上方添加
//room數據庫 apply plugin: 'kotlin-kapt'
2.添加所需要的庫
implementation 'androidx.room:room-runtime:2.2.3' annotationProcessor 'androidx.room:room-compiler:2.2.3' kapt 'androidx.room:room-compiler:2.2.3' androidTestImplementation 'androidx.room:room-testing:2.2.3'
3.創建是實體類User.kt
@Dao interface UserDao { @Query("SELECT * FROM Users WHERE userid = :id") fun getUserById(id: String): User? /*當數據庫中已經有此用戶的時候,直接替換*/ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertUser(user: User) @Update fun upDateUser(user: User) @Query("DELETE FROM Users") fun deleteAllUsers() } 4.創建dao文件UserDao.kt @Dao interface UserDao { @Query("SELECT * FROM Users WHERE userid = :id") fun getUserById(id: String): User? /*當數據庫中已經有此用戶的時候,直接替換*/ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertUser(user: User) @Update fun upDateUser(user: User) @Query("DELETE FROM Users") fun deleteAllUsers() } 5.創建AppDatabase.kt
@Database(entities = arrayOf(User::class), version = 1) abstract class UsersDatabase : RoomDatabase() { abstract fun userDao(): UserDao companion object { @Volatile private var INSTANCE: UsersDatabase? = null fun getInstance(context: Context): UsersDatabase = INSTANCE ?: synchronized(this) { INSTANCE ?: buildDatabase(context).also { INSTANCE = it } } private fun buildDatabase(context: Context) = Room.databaseBuilder( context.applicationContext, UsersDatabase::class.java, "Sample.db") .build() } }
6.使用
UsersDatabase .getInstance(this).userDao().insertUser()