buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:1.2.0"
}
}
apply plugin: 'realm-android'
任何数据库都无非是CRUD的操作,也就是为了增、删、改、查的使命。 相对于传统的原生的Sqlite开发,Realm的API使开发者显得轻松自在。
使用Realm需要配置RealmConfiguration.代码很简单如下:
Real mRealm = Realm.getInstance(new RealmConfiguration.Builder(this)
.name("test")
.build());
创建模型只需要定义一个类继承自RealmObject
public class Apple extends RealmObject {
private int id;
private String color;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Apple{" +
"id=" + id +
", color='" + color + '\'' +
'}';
}
}
保存一个java类数据到Realm,只需调用它的createObject方法。 Realm保存数据的示例代码如下:
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Apple mApple = mRealm.createObject(Apple.class);
mApple.setId(1);
mApple.setColor("red");
}
});
executeTransaction()打开一个事务,这是为了保证往Realm增加数据时,数据的一致性。 当调用createObject()的时候,数据对象就已经保存在Realm中了,是不是特别简单?
查询的结果保存在RealmResults对象中 示例代码:
final RealmResults<Apple> realmResults = mRealm.where(Apple.class).findAll();
for(Apple apple:realmResults){
Log.d(TAG, "query "+apple.toString());
}
Realm支持从查询的结果当中删除某一项或者全部项
final RealmResults<Apple> realmResults = mRealm.where(Apple.class).findAll();
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// remove single match
realmResults.deleteFirstFromRealm();
realmResults.deleteLastFromRealm();
// remove a single object
Apple dog = realmResults.get(5);
dog.deleteFromRealm();
// Delete all matches
realmResults.deleteAllFromRealm();
}
});
Realm更新数据十分及时,只要在查询的结果集中找出相应的数据项然后进行相关的更新,数据就更新到了Realm.
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Apple apple = realm.where(Apple.class).findFirst();
//已经更新
apple.setColor("yellow");
}
});
了解了增、删、改、查的功能后,我们就能用Realm进行简单的数据库开发。
后面的文章我非讲解它更高级的特性和用法。