Realm for Android 使用入门
来源:互联网 发布:局域网抓包软件 编辑:程序博客网 时间:2024/05/01 22:54
Realm 是一个手机数据库,是用来替代 SQlite 的解决方案,比 SQlite 更轻量级,速度更快,因为它有一套自己的数据库搜索引擎,并且还具有很多现代数据库的优点,支持 JSON,流式 API 调用,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已经支持 Java、Swift、Object - C、React - Native 等多种实现,今天我们就来简单的入门 Ream 数据库的使用
GitHub 地址:Realm GitHub 地址
官方文档地址:官方文档地址
一、使用要求
首先使用 Realm 的一些使用要求我们还是需要先来了解
- Android Studio 的使用版本必须在 1.5.1 或更高
- 使用 JDK 7 或更高版本
- Android API 9 或更高(即 Android 2.3 及以上)
- Realm 不在 Android 支持 Java,不支持 Eclipse 作为 IDE,如果使用请转到 Android Studio
上面基本就是我们要注意的事项,大家了解即可
二、环境配置
在了解 Realm 在 Andorid 中的基本使用要求之后,接下来我们来看看,如何在 Android Studio 中来引入 Realm
1)首先在工程的根目录(工程目录) build.gradle 中引入如下代码,注意是工程的 build.gradle 而不是 app 的 build.gradle
可以看到 Realm 是作为一个插件来安装的
添加位置如下图:
2)在 app 的 build.gradle 中添加如下代码
添加位置如下图:
当上面的这两步做好以后,可以刷新我们的 Gradle 依赖,如果你是通过 v 0.88 以前的版本来更新,你需要去清理一下你的 Gradle 项目(./gradlew clean),来移除之前的安装,另外对 Maven 和 Ant 并不支持
三、官方推荐的例子
introExample:包括了简单的例子,让你知道如何去使用当前的 API
gridViewExample:一个简单的 APP,来展示怎么通过 Realm 来支持 GridView 的存储,同时它还呈现了如何构建一个 JSON 的数据库(通过 GSON)
thread Example :简单展示如何在多线程中使用 Realm
adapterExample:如何通过使用 RealmBaseAdapter 和 RealmRecyclerViewAdapter 来使 Realm 以优雅的方式作用于 ListView 和 RecyclerView
jsonExample:如何使用一种新的 Realm JSON 工具
encryptionExample:如何使用加密 Realms
rxJavaExample:如何搭配 RxJava 来使用 Realm
UnitTestExample:教你在使用 Realm 时如何编写单元测试
四、初始化 Realm
1)在 Applaction 的 onCreate() 方法中使用 Realm.init() 初始化
2)在 Applaction的onCreate() 方法中对 Realm 进行相关的配置
1. 使用默认配置:
或者如下:
使用默认配置会创建一个 default.realm 的 Realm 文件,一般来说这个文件位于 data/data/包名/files 目录下,通过 realm.getPath 来获得该 Realm 的绝对路径
2. 使用自定义配置:
3. 创建非持久化的 realm,也就是保存在内存中,应用关闭后就清除
RealmConfiguration 支持的方法:
Builder.name:指定数据库的名称,如果不指定默认为 default
Builder.schemaVersion:指定数据库的版本号
Builder.encryptionkey:指定数据库的秘钥
Builder.migration:指定迁移操作的迁移类
Builder.deleteRealmIfMigrationNeeded:声明版本冲突时自动删除原数据库
Builder.inMemory:声明数据库只在内存中持久化
build:完成配置构建
如果你像以上一样创建了自己的 Application,并初始化 Realm,那么你需要在 Andorid.manifest.xml 中进行如下配置:
3)在 Activity 中具体的使用:
或者使用完后在 onDestory() 方法中进行关闭:
四、创建实体
创建一个 User 类,继承 RealmObject
这里除了通过继承 RealmObject 来声明数据模型外,还可以通过实现 RealmModel 接口,并添加 @RealmClass 修饰符来声明:
多对多的关系:
支持的属性:
boolean、byte、short、int、long、float、double、String、Date、byte[]、RealmObject、RealmList<? extends RealmObject>,还支持 Boolean、Byte、Short、Integer、Long、Float 和 Double
@primarykey:表示该字段是主键,一般使用过数据库的同学可能知道,primarykey 就是主键,使用 @primarykey 来标注字段类型必须是字符串(String)或整数(byte、short、int、long)以及它们的包装类型(Byte、Short、Integer、Long),还需要注意的是不可以使用多个主键
@Required:表示该字段非空
在某些情况下,有些字段是不能为 null 的,使用 @Required 属性可以强行要求其属性不能为 null,只能用于 Boolean、Byte、Short、Integer、Long、Float、Double、String、byte[] 和 Date,在其他类型属性上使用 @Required 会导致编译失败
@Ignore:表示忽略该字段,添加 @Ignore 标签后,存储数据时会忽略该字段
@Index:添加搜索索引,为字段添加 @Index 标签,插入速度变慢,查询速度变快,支持索引 String、byte、short、int、long、boolean 和 Date字段
五、增
1) 实现方法一:事务操作
类型一:新建一个对象进行存储
2) 实现方法二:使用事务块
六、删
1) 使用 deleteFromRealm()
2) 使用 deleteFromRealm(int index)
3) 其他方法
七、改
八、查
查询的操作相对来说比较多,下面我们来一一介绍
1) findAll:查询所有,如查询所有 User
2) findFirst:查询第一条数据,示例如下
还有很多其他的方法如下:
sum():对指定字段求和
average():对指定字段求平均值
min():对指定字段求最小值
max():对指定字段求最大值
findAll():返回结果集所有字段
findAllSorted():排序返回结果集所有字段等等方法,还有很多,这里不再一一列举,用到时大家可以去官网查询相关的 API
今天就写到这里,有错误请指正
- Realm for Android 使用入门
- Realm for Android 使用入门
- Realm for Android 快速入门
- Android for Realm 初级使用
- realm数据库 For android
- Realm for Android
- Realm For Android
- Realm For Android
- Realm For Android
- Realm For Android入门教程
- Realm for Android
- Realm for Android快速入门教程
- Realm for Android快速入门教程
- Realm for Android快速入门教程
- Realm for Android快速入门教程
- Realm for Android快速学习
- Realm for Android详细教程
- Realm for Android详细教程
- iOS多线程--彻底学会多线程之『GCD』
- iOS多线程--彻底学会多线程之『NSOperation』
- so文件反汇编反编译到C源码
- iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
- iOS多线程--彻底学会多线程之『RunLoop』
- Realm for Android 使用入门
- iOS网络--『文件下载、断点下载』的实现(一):NSURLConnection
- c#使用redis 存取dataset数据集
- JSP编码的一些小测试
- iOS网络--『文件下载、断点下载』的实现(二):NSURLSession
- 微信小程序如何使用?门店功能值得期待
- iOS网络--『文件下载、断点下载』的实现(三):AFNetworking
- CentOS 6.5下安装Java JDK 环境(1.8)
- Core ML官方文档中文翻译【Core ML总篇】