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 ();