realm android,Realm for Android快速入门教程
介绍
如果你关注安卓开发的最新趋势,你可能已经听说过 Realm 。Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库。
相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。
在这篇快速入门教程中,你将学到Android版Realm的基础知识。本教程我们使用的是Realm v0.84.1。
1. 添加Realm到工程
要在安卓工程中使用Realm,你需要在module的build.gradle文件中添加一个添加一个依赖:compile 'io.realm:realm-android:0.84.1'
2. 创建一个Realm
一个Realm相当于一个SQLite数据库。它有一个与之对应的文件,一旦创建将持久保存在安卓的文件系统中。
要创建一个新的Realm,你可以在任意Activity中调用静态方法Realm.getInstance。Realm myRealm = Realm.getInstance(context);
注意,调用Realm.getInstance,而没有传入RealmConfiguration,会创建一个叫做 default.realm的Realm文件。
如果你想向app中添加另一个Realm,必须使用一个RealmConfiguration.Builder对象,并为 Realm file 指定一个独有的名字。Realm myOtherRealm =
Realm.getInstance( new RealmConfiguration.Builder(context)
.name("myOtherRealm.realm")
.build()
);
3. 创建一个RealmObject
只要继承了RealmObject类,任意JavaBean都能存储在Realm中。不知道JavaBean是什么?它就是一个可序列化的java类,有默认构造器,成员变量有相应的getter/setter方法。比如,下面这个类的实例就能轻松的存储在一个Realm中:public class Country extends RealmObject { private String name; private int population; public Country() { } public String getName() { return name;
} public void setName(String name) { this.name = name;
} public int getPopulation() { return population;
} public void setPopulation(int population) { this.population = population;
}
}
如果你想让RealmObject的一个成员变量作为主键,你可以使用@PrimaryKey注解。比如,这里演示了如何为Country类添加一个主键code:@PrimaryKeyprivate String code;public String getCode() { return code;
}public void setCode(String code) { this.code = code;
}
4. 创建transaction
虽然从一个Realm读取数据非常简单(下一节有讲),但是向它写入数据就稍微复杂一点。Realm遵循 ACID (数据库事务正确执行的四个基本要素的缩写)规范,为了确保原子性和一致性,它强制所有的写入操作都在一个事务中执行。
要开始一个新的事务,使用beginTransaction方法。类似地,要结束这个事务,使用commitTransaction方法。
注:事务即英文里面的transaction。
这里演示了如何创建和保存一个Country类的实例:myRealm.beginTransaction();
// Create an object
Country country1 = myRealm.createObject(Country.class);
// Set its fields
country1.setName("Norway");
country1.setPopulation(5165800);
country1.setCode("NO");
myRealm.commitTransaction();
你可能注意到了country1并不是用Country类的构造器创建的。对于一个Realm来说,管理一个RealmObject的实例,这个实例必须用createObject方法创建。
如果你必须使用构造器,别忘了在提交事务前使用相关Realm对象的copyToRealm方法。这里是示例:// Create the objectCountry country2 = new Country();
country2.setName("Russia");
country2.setPopulation(146430430);
country2.setCode("RU");
myRealm.beginTransaction();
Country copyOfCountry2 = myRealm.copyToRealm(country2);
myRealm.commitTransaction();
5. 书写查询
Realm为创建查询提供了一套非常直观和流式的API。要创建一个查询,使用相关Realm对象的where方法并传入你感兴趣的对象的类。创建完查询之后,你可以使用返回一个RealmResults对象的findAll方法获取所有的结果,findAll。在下面的例子中,我们获取并打印Country的所有对象:RealmResults results1 =
myRealm.where(Country.class).findAll();for(Country c:results1) { Log.d("results1", c.getName());
}// Prints Norway, Russia
Realm提供了几个命名非常贴切的方法,比如beginsWith, endsWith,lesserThan 和 greaterThan,可以用来过滤,筛选结果。下面的代码演示了如何使用greaterThan方法来获取population(人口)大于1亿的Countryobjects:RealmResults results2 =
myRealm.where(Country.class)
.greaterThan("population", 100000000)
.findAll();// Gets only Russia
如果你想查询结果被归类,你可以使用findAllSorted方法。在它的参数中,用一个String指定被归类field的名字,并用一个boolean指定归类顺序。// Sort by name, in descending orderRealmResults results3 =
myRealm.where(Country.class)
.findAllSorted("name", false);// Gets Russia, Norway
总结
在这篇快速入门中,你学到了如何在安卓项目中使用Realm。可以看到创建一个Realm数据库、存储查询数据是多么的容易。要学习更多t Realm for Android的知识,你可以查阅它的 Java 文档 。
realm android,Realm for Android快速入门教程相关推荐
- android 新的布局,Android新布局方式ConstraintLayout快速入门教程
前言 在android开发中,我们通常是手写布局,很少会用拖动来写布局,虽然constraintlayout在i/o上以拖动来展现了各种功能,我估计在以后开发中,程序员还是习惯手撸代码. 我自己试着拖 ...
- 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程
认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...
- Android 2D游戏引擎AndEngine快速入门教程
Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...
- 视频教程-Lifecycle组件快速入门教程-Android
Lifecycle组件快速入门教程 Android研发工程师.南京邮电大学毕业,曾就任于创新工场,现就任于某知名大型移动互联网公司,CSDN博客讲师.<libGDX移动游戏开发从入门到精通> ...
- OUYA游戏开发快速入门教程第1章了解OUYA及其设备
OUYA游戏开发快速入门教程第1章了解OUYA及其设备 OUYA是基于Andorid系统的游戏主机.围绕OUYA游戏机,已经形成一个完整的生态圈.在国外,OUYA已经成为知名的游戏平台.本章会站在玩家 ...
- OUYA游戏开发快速入门教程
OUYA游戏开发快速入门教程 试读地址:http://pan.baidu.com/s/1o63a3W2 本教程是国内唯一OUYA游戏开发教程.本教程基于Unity全面讲解OUYA游戏开发方式.内容包 ...
- BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们
BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们 Maker的中文含义类似"创客".创客是指一群酷爱科技.热衷实践的人群,他们以分享技术.交流思想 ...
- neon 指令 c语言,Neon指令集优化快速入门教程
Neon指令集优化快速入门教程 Neon指令集优化快速入门教程 文章目录 1. Neon是什么? 2.Neon为什么速度快 3. Neon基础概念 4. Neon的C语言接口 C语言程序中集成Neon ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
最新文章
- 转《刘润的数字化家庭》
- tomcat设置https访问
- 6、ShardingSphere 之 读写分离
- Java 9 尝鲜之JShell交互式编程环境
- redis映射的概念_Redis基础概念和实现机制的总结
- matlab如何保存子图,MATLAB:在子图中绘制/保存网格函数的X-Y视图
- 【一分钟论文】轻松解读Semi-supervised Sequence Learning半监督序列学习
- 用nginx转发请求tomcat 如何配置访问日志获取真实ip
- SDOI2017 相关分析
- 抖音去水印最新php方法代码
- 【机器学习】逻辑回归 LR 算法 整理
- java流浪救助站公益志愿者管理系统
- BAT32G137 移植threadX
- macbook proa1708_MacBook Pro 2017 A1708自己更换电池
- 硬盘分区大学计算机,这是一所大学. 问: 如何对3TB硬盘进行分区?
- 使用Phaser开发你的第一个H5游戏(一)
- springboot 配置热启动
- jdk1.8的安装教程
- 计算机中复制和移动的操作系统,如何将旧电脑中的全部文件复制到新电脑中,包括操作系统?...
- iOS、mac开源项目及库
热门文章
- 【Es】es 配置文件详解
- Memcache 客户端
- Java中的JsonConfig详解
- 【Kafka】Failed to send data to Kafka: Failed to allocate memory within the configured max blocking
- 【Flink】Flink WindowOperator大概工作流程
- spark学习-Spark算子Transformations和Action使用大全(Transformations章(二))
- ListView的性能优化之convertView和viewHolder
- Linux版本的ActiveMQ安装过程
- matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!
- 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!