RealmAndroid簡(jiǎn)單使用說(shuō)明
-sqlite數(shù)據(jù)庫(kù)-文件形式存儲(chǔ)-shareprefence
Shareprefence的實(shí)質(zhì)是將數(shù)據(jù)存儲(chǔ)在xml中我們可以認(rèn)為是Android基于文件存儲(chǔ)的一種簡(jiǎn)單封裝。sp和文件適合以緩存形式存儲(chǔ),比如數(shù)據(jù)不需要進(jìn)行條件查詢以及修改的情況下。如果只需要部分?jǐn)?shù)據(jù)時(shí),需要大量代碼來(lái)實(shí)現(xiàn)這個(gè)功能。而數(shù)據(jù)庫(kù)能夠給我們實(shí)現(xiàn)這種功能。Realm不同于其他的比如greendao以及ormlite,這2種基于sqlite的orm實(shí)現(xiàn)。Realm可以說(shuō)是和sqlite同級(jí)別的手機(jī)數(shù)據(jù)庫(kù)。廢話一大堆,ok讓我們來(lái)看看Realm的使用吧。首先Realm的文檔:https://realm.io/docs/java/latest/
目前Realm的最新版本是0.88.3在這里需要特別說(shuō)明的Realm在0.88.x之后的導(dǎo)入方式不同于之前的方式。我們來(lái)看看區(qū)別在哪里。-androidstudio版本>=1.5.1
在這種情況下我們需要在項(xiàng)目的build.gradle加入以下代碼注意是工程的build,不是具體app的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
第二步我們?cè)赼pp的build.grade文件中
- 1
- 1
TheMaven&Antbuildsystemsarenotsupported.Ifyouwishtoseesupportforthesebuildsystemspleaseexpressyourinterestinthebelowissuessowecangaugetheinterest.maven和ant編譯系統(tǒng)暫不支持,如果你希望支持他們請(qǐng)去他們的github留言。(不發(fā)表任何評(píng)論,單純翻譯官方文檔。)-androidstudio版本<1.5.1
- 1
- 1
熟悉的代碼熟悉的味道。在這個(gè)版本的Realm支持了ec下的使用jar地址去官網(wǎng)下載吧。
一大段話終于把Realm給導(dǎo)入到項(xiàng)目里了。終于可以開(kāi)始我們的第二步了。混淆。。。。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
第一步realm每個(gè)activity中使用都需要初始化。這里我們直接在application中初始化他吧。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
具體的activity中Realmrealm=Realm.getDefaultInstance();獲得Realm的實(shí)例。
第一步創(chuàng)建我們具體要使用的對(duì)象。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
所有的對(duì)象都必須繼承自RealmObject。對(duì)象可以有以下幾種類型boolean,byte,short,ìnt,long,float,double,String,Date,byte[].以及RealmObject和RealmList
Realm中的注解:
@PrimaryKey
@Required
@Ignore
- @Index
Theannotation@Indexwilladdasearchindextothefield.Thiswillmakeinsertsslowerandthedatafilelargerbutquerieswillbefaster.Soit’srecommendedtoonlyaddindexwhenoptimizingspecificsituationsforreadperformance.Wesupportindexing:String,byte,short,int,long,booleanandDatefields.索引,添加索引后會(huì)導(dǎo)致增加變慢并且會(huì)導(dǎo)致數(shù)據(jù)庫(kù)文件增大,但是查詢的時(shí)候會(huì)快。(這個(gè)自行考慮了)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
我們就把一只叫叫旺財(cái)?shù)墓反嫒肓藬?shù)據(jù)庫(kù)這里有個(gè)方法realm.copyToRealmOrUpdate(obj);如果存在這個(gè)數(shù)據(jù)就會(huì)更新如果不存在就會(huì)增加。再也不需要select一遍在判斷是增加或者修改了。然后我們查詢出了所有dog表中age=1的第一只,并將的age修改為2.
查詢
- 1
- 1
查詢出所有的狗。
刪除
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
多表聯(lián)查
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 1
- 2
- 3
查詢出所有擁有1歲的狗的人。下面是一些查詢的方法between,greaterThan(),lessThan(),greaterThanOrEqualTo()&lessThanOrEqualTo()equalTo()¬EqualTo()contains(),beginsWith()&endsWith()
分組
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 1
- 2
- 3
排序
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
表達(dá)式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
回調(diào)的使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
異步操作
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18