Realm 你所不知知道的用法

Realm 是一種可以跨平臺 的數據庫,速度也很快,至於普通的增刪改查今天我就不多講了.講點大家可能不知道的

1.數據庫變動監聽 

      這是什麼gui,通俗講就是對這個數據庫表進行監聽,當數據發生變化時監聽器就會觸發,和rxjava 契合,事實上用到了rxjava

    可以對增刪改查的任意狀態進行監聽,這個在開發中很有用,數據驅動頁面.

    我們先來看一組查詢時的監聽

 realm.where(PhonePhotoRealm.class)
                .sort("uploadState", Sort.ASCENDING, "time", Sort.ASCENDING)
                .findAll()
                .asFlowable()
                .flatMap(new Function<RealmResults<PhonePhotoRealm>, Flowable<String>> () {
                    @Override
                    public Flowable<String> apply(RealmResults<PhonePhotoRealm> phonePhotoRealms) throws Exception {
                       

                        return FlowableObserveOn.just("xxx","xxx");
                    }
                }).observeOn(Schedulers.io())
                .subscribeOn(AndroidSchedulers.mainThread())
                .subscribe(observer);
asFlowable 獲取到 Flowable  這個是rxjava 中的 ,asFlowable 是realm 和 rxjava 數據連接的橋樑,換句話說我們現在只要關注flatMap 監聽變化就可以了,只要該數據庫發生變化,apply事件就會立即觸發,同時我們可以像使用rxjava一樣去進行線程調度,事實到這裏的,就是rxjava.

2.查詢中的模糊查詢,這點在使用中往往不是太常用,但是,一旦有需求往往能夠爲開發節省大量的資源和時間,

   

 RealmResults<FileBean> fileBeans = realm.where (FileBean.class)
                .like ("fileName", fileName +"*")
                .findAll ();

 例如上邊這段代碼,我想通過一段文件名查詢這個文件對應的信息表,但是遺憾的是,我只有部分文件名,這時就用到模糊查詢,

fileName 是部分文件名, * 號 代表 匹配,這個大家一般都懂.這樣就會查詢到所有該文件民匹配的對象.

當然還可以同時查詢幾個文件名對應的信息

   

RealmResults<FileBean> fileBeans = realm.where (FileBean.class)
        .in ("fileName", new String[]{fileName1,fileName2,fileName3,})
        .findAll ();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章