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)
}