Dagger,如何创建DAO模块

Dagger, how to create DAO module

我需要一些关于如何使用 ROOM 在应用程序中实现 Dagger 的帮助,我一直在为 DAO 接口创建模块。

dao 模块

@Module
abstract class daoModule {
    @Binds
    abstract fun provideDao(dao: WordDao): WordDao
}

错误

 public abstract com.example.daggerroom.Room.WordDao provideDao(@org.jetbrains.annotations.NotNull()
                                                        ^C:\Android\DaggerRoom\app\build\tmp\kapt3\stubs\debug\com\example\daggerroom\di\AppComponent.java:6: error:

如果我对此有任何评论,我将不胜感激,因为我已经坚持了一个多星期,我只是不确定如何使用 Room 实现 Dagger。

首先您需要能够提供一个数据库实例,然后您可以从 Db 中获取您的 Dao:

@Module
abstract class DaoModule {
    companion object {
        
        @Provides
        @Singleton
        fun provideDatabase(application: Application): YourDb {
            return Room.databaseBuilder(application, YourDb.class, "db").build()
        }

        @Provides
        @Singleton
        fun provideWordDao(database: YourDb): WordDao {
            return database.getWordDao()
        }
    }

    // Binds methods...
}