您的位置:首页 > 编程语言 > Java开发

Realm Java 简明教程(1)

2016-02-16 19:56 465 查看

Realm Java 简明教程

Realm 是一个轻量的android版本的数据存储库

Realm 是一个轻量的android版本的数据存储库,快速简洁的操作方式,使得其优势得以凸显,我们来看下一个实例:

// 定义需要存储的类,继承自 RealmObject
public class Dog extends RealmObject {
@Required // Name cannot be null
private String name;
private int age;

// ... Generated getters and setters ...
}
public class Person extends RealmObject {
@Required // Name is not nullable
private String name;
private String imageUrl; // imageUrl is an optional field
private RealmList<Dog> dogs; // A person has many dogs (a relationship)

// ... Generated getters and setters ...
}

// 像一般的操作方式使用它
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge("1");
Log.v(TAG, "Name of the dog: " + dog.getName());

// 获取一个Realm实例
Realm realm = Realm.getInstance(context);

// 查找Dog数据库中字段age小于2的所有数据
RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 此时还没有插入存储,因此为0

// 保存这个数据
realm.beginTransaction();
realm.copyToRealm(dog);
realm.commitTransaction();

// 查询是自动同步更新的
puppies.size(); // => 1

//异步查询和更新数据
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// 开始查询和修改数据
Dog theDog = realm.where(Dog.class).equals("age", 1).findFirst();
theDog.setAge(3);
}
}, new Realm.Transaction.Callback() {
@Override
public void onSuccess() {
// 原始的查询数据会自动更新
puppies.size(); // => 0 because there are no more puppies (less than 2 years old)
dog.getAge();   // => 3 数据已经修改
}
});


我们来看下如上的流程,发现处理过程比起我们之前使用的数据库方案简单了许多。像litepal的操作已经很简单,但是相对来说还是需要配置一些xml和app参数才可以使用。相对来说,Realm则非常轻量,简单易用,有同步和异步处理方案,代码相对也非常优雅。

开始

下载库或者去官网下载代码

Realm jar

Realm src

前期要求

我们仅支持android

Android Studio >= 0.8.6 — 使用Eclipse,往下看.

最新的Android SDK版本.

JDK 版本 >=7.

我们支持android2.3以上版本

使用

你可以选择手动添加或者使用maven工具实现。

Maven

1.请确保您的项目使用jcenter作为一个依赖库 (默认的是最新的android gradle plugin)

2.在你的工程依赖库增加compile ‘io.realm:realm-android:0.87.4’

3.使用工具->Android->同步即可

Jar

1.下载jar包解压

2.新建一个工程

3.复制jar文件夹到app/libs里面

4.在工程的依赖里面加入包含此库。

混淆要求

Realm 在编译时生成每个RealmObject 的代理类。为了确保这些类可以在混淆和静态分析工具能运行的,你的混淆语法需要如下去编写:

-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class * { *; }
-dontwarn javax.**
-dontwarn io.realm.**


Api查询

你可以在官方地址查看到所有的api使用接口。

具体Models的使用规则,下一章节再来分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android realm