–sqlite数据库–文件形式存储–shareprefence
Shareprefence的实质是将数据存储在xml中大家可以认为是Android基于文件存储的一种简单封装。sp和文件适合以缓存形式存储,比如数据不需要进行条件查询以及修改的情况下。如果只需要部分数据时,需要大量代码来实现这个功能。而数据库能够给大家实现这种功能。Realm不同于其他的比如greendao以及ormlite,这2种基于sqlite的orm实现。Realm可以说是和sqlite同级别的手机数据库。废话一大堆,ok让大家来看看Realm的使用吧。首先Realm的文档:https://realm.io/docs/java/latest/
目前Realm的最新版本是0.88.3在这里需要特别说明的Realm在0.88.x之后的导入方式不同于之前的方式。大家来看看区别在哪里。-androidstudio版本>=1.5.1
在这种情况下大家需要在项目的build.gradle加入以下代码注意是工程的build,不是具体app的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
第二步大家在app的build.grade文件中
- 1
- 1
TheMaven&Antbuildsystemsarenotsupported.Ifyouwishtoseesupportforthesebuildsystemspleaseexpressyourinterestinthebelowissuessowecangaugetheinterest.maven和ant编译系统暂不支持,如果你希望支持他们请去他们的github留言。(不发表任何评论,单纯翻译官方文档。)-androidstudio版本<1.5.1
- 1
- 1
熟悉的代码熟悉的味道。在这个版本的Realm支持了ec下的使用jar地址去官网下载吧。
一大段话终于把Realm给导入到项目里了。终于可以开始大家的第二步了。混淆。。。。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
第一步realm每个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的实例。
第一步创建大家具体要使用的对象。
- 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
所有的对象都必须继承自RealmObject。对象可以有以下几种类型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.索引,添加索引后会导致增加变慢并且会导致数据库文件增大,但是查询的时候会快。(这个自行考虑了)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
大家就把一只叫叫旺财的狗存入了数据库这里有个方法realm.copyToRealmOrUpdate(obj);如果存在这个数据就会更新如果不存在就会增加。再也不需要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
多表联查
- 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
表达式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
回调的使用
- 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