Может кто-нибудь, пожалуйста, объясните мне это! Мы все знаем, что можем не создать объект интерфейса в Java и Kotlin. Мы можем реализовать интерфейс только из класса. Так что, когда дело доходит до Room Database , мы можем создать объект DAO , который на самом деле является интерфейсом внутри класса репозитория.
Ниже приводится интерфейс Dao:
import androidx.lifecycle.MutableLiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
@Dao
interface WordDao {
@Query("SELECT * from word_table ORDER BY word ASC")
fun getAlphabetizedWords(): MutableLiveData<ArrayList<Word>>
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(word: Word)
@Query("DELETE FROM word_table")
suspend fun deleteAll()
}
Ниже приведен класс репозитория, в котором Dao используется в качестве объекта:
import androidx.lifecycle.MutableLiveData
class WordRepository(private val wordDao: WordDao) {
val allWords: MutableLiveData<ArrayList<Word>> = wordDao.getAlphabetizedWords()
suspend fun insert(word: Word) {
wordDao.insert(word)
}
}