GreenDao 3.X之RxJava

本文介绍了GreenDao 3.X如何与RxJava结合使用,重点讲解了RxDao和RxQuery对象的获取及常用API,强调了它们在实现流式逻辑写法中的优势,有助于提升代码可读性。

        在GreenDao 3.X之基本使用已经了解到GreenDao 3.X的基本使用。现GreenDao 3.X已集成RxJava,其中,RxDao<T,K> 和RxQuery<T>便是GreenDao 3.X中RxJava的核心操作类。其最大的特点就是在增删改查等基本操作时返回Observable,用于RxJava的流式逻辑写法,其最大的优点便于流式开发,提高代码的可读性。。既然集成了RxJava,当然要尝尝鲜,看看该如何使用。

RxDao

获取RxDao对象和RxQuery对象

    RxDao<T,K> mRxDao = xxDao.rx(); // 返回一个默认subscribeOn在IO线程的RxDao
                                     // T是实体类,K主键类型
    RxDao<T,K> mRxDao = xxDao.rxPlain();// 返回一个未设置默认订阅的RxDao

常用 API

    rx.Observable<java.lang.Long>     count():返回一个含有数据库数据个数的Observable

    rx.Observable<java.lang.Void>     delete(T entity):从数据库中删除数据,并返回一个空的Observable
    rx.Observable<java.lang.Void>     deleteAll():从数据库中删除数据,并返回一个空的Observable
    rx.Observable<java.lang.Void>     deleteByKey(K key):将数据库中主键为key的数据删除,,并返回一个空的Observable
    rx.Observable<java.lang.Void>     deleteByKeyInTx(java.lang.Iterable<K> keys):使用事务操作,将数据库中,删除key集合中每个key所对应的实体,并返回一个空的Observable
    rx.Observable<java.lang.Void>     deleteByKeyInTx(K... keys):使用事务操作,将数据库中,删除key[ ]中每个key所对应的实体,并返回一个空的Observable
    rx.Observable<java.lang.Void>     deleteInTx(java.lang.Iterable
plugins { id &#39;tplink.android.library&#39; alias(libs.plugins.kotlin.parcelize) id &#39;tplink.android.hilt&#39; id &#39;org.greenrobot.greendao&#39; } android { namespace &#39;com.tplink.libtpnetwork&#39; defaultConfig { minSdkVersion project.ANDROID_MIN_SDK_VERSION as int targetSdkVersion project.ANDROID_TARGET_SDK_VERSION as int compileSdkVersion project.ANDROID_COMPILE_SDK_VERSION as int versionCode 1 versionName "1.0" javaCompileOptions { annotationProcessorOptions { arguments += [ "room.schemaLocation" : "$projectDir/schemas".toString(), "room.incremental" : "true", "room.expandProjection": "true"] } } } flavorDimensions "CLOUD_ENV" productFlavors { dist { dimension "CLOUD_ENV" buildConfigField "String", "OTA_URL", "\"https://aps1-ota.i.mercusyscloud.com\"" buildConfigField "String", "OTA_SERVICE_ID", "\"https://ota.prd.self-signed\"" } beta { dimension "CLOUD_ENV" buildConfigField "String", "OTA_URL", "\"https://aps1-ota-beta.i.mercusyscloud.com\"" buildConfigField "String", "OTA_SERVICE_ID", "\"https://ota.beta.self-signed\"" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(&#39;proguard-android-optimize.txt&#39;), &#39;proguard-rules.pro&#39; } staging { initWith release } } flavorDimensions "CLOUD_ENV" //"APP", "LOG", "CLOUD_ENV" productFlavors { dist { dimension "CLOUD_ENV" } beta { dimension "CLOUD_ENV" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = libs.versions.kotlinJvmTarget.get() } } dependencies { api fileTree(include: [&#39;*.jar&#39;], dir: &#39;libs&#39;) api project(":libdeviceadapter") api project(":tapoapp") api libs.bundles.google.firebase api libs.bundles.reactivex.rx api libs.bundles.tplink.cloud.nbu api libs.tplink.utility api libs.tplink.cloud api libs.tplink.tmp api libs.tplink.tdp api libs.tplink.wifi api libs.tplink.tracker api libs.tplink.analytics api libs.tplink.core.network.cloud api libs.greendao // api libs.bundles.datastore api "androidx.datastore:datastore-preferences:1.0.0" api "androidx.datastore:datastore-preferences-rxjava2:1.0.0" testImplementation libs.junit4 testImplementation libs.mockito.core testImplementation libs.androidx.core.test androidTestImplementation libs.androidx.test.ext androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.mockito.android // configurations.configureEach { // resolutionStrategy { // force "androidx.core:core-ktx:${CORE_KTX_VERSION}" // force "androidx.core:core:${CORE_KTX_VERSION}" // force "androidx.appcompat:appcompat:${LIB_ANDROIDX_APPCOMPAT}" // force "androidx.activity:activity:${LIB_ANDROIDX_ACTIVITY}" // force "androidx.fragment:fragment:${LIB_ANDROIDX_FRAGMENT}" // } // } //Room def ROOM_VERSION = "2.3.0" implementation "androidx.room:room-runtime:${ROOM_VERSION}" annotationProcessor "androidx.room:room-compiler:${ROOM_VERSION}" kapt "androidx.room:room-compiler:${ROOM_VERSION}" api &#39;io.reactivex.rxjava2:rxandroid:2.1.1&#39; // api "io.reactivex.rxjava2:rxkotlin:${RXJAVA2_KTX_VERSION}" } greendao { schemaVersion 2 daoPackage "com.tplink.libtpnetwork.gen" targetGenDir "src/main/java" } //解决greendao在kotlin编译中会导致异常的问题 tasks.whenTaskAdded { task -> if (task.name.matches("\\w*compile\\w*Kotlin")) { task.dependsOn(&#39;greendao&#39;) } if (task.name.matches("\\w*kaptGenerateStubs\\w*Kotlin")) { task.dependsOn(&#39;greendao&#39;) } if (task.name.matches("\\w*kapt\\w*Kotlin")) { task.dependsOn(&#39;greendao&#39;) } } 这是我的build.gradle的配置 结合上面一条提问的错误分析,帮我生成解决方案
最新发布
10-10
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值