一.介紹
Realm是一個不錯的手機平臺上的資料庫,支援多種程式設計環境,如:Java、Object-C、React Native、Swift、Xamari等。
Realm的官網:https://realm.io/
github地址:https://github.com/realm
realm-java庫的文件:https://realm.io/docs/java/la…
二.使用
1)配置:
//1.工程gradle
buildscript {
repositories {
jcenter()
}
dependencies {
//1. 新增realm外掛
classpath "io.realm:realm-gradle-plugin:1.2.0"
}
}
//2. app的gradle
apply plugin: `realm-android`
dependencies {
compile `io.realm:realm-android-library:1.2.0`
}
2)資料塊操作實體類
package com.peter.schoolmarket.data.pojo;
import java.io.Serializable;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import io.realm.annotations.Required;
/**
* Created by PetterChen on 2017/4/10.
*/
public class User extends RealmObject implements Serializable {
@PrimaryKey //主鍵id
private int id;//
private String username;//使用者名稱
private String password;//使用者密碼
private String phone;//手機號
private String imgUrl;//頭像地址
public User() {
//
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getPhone() {
return phone;
}
public String getImgUrl() {
return imgUrl;
}
}
3)初始化
//Realm初始化,這是預設初始化,可以自定義初始化
Realm.init(this);//this表示上下文
RealmConfiguration config = new RealmConfiguration.Builder().build();//可以修改
Realm.setDefaultConfiguration(config);
4)資料庫操作
可以使用事務或者事務塊,對於事務塊,有同步的和非同步的,如果使用非同步事務塊,需要手動關閉
//增,事務增
Realm realm=Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(user);
realm.commitTransaction();
//增,事務塊增
Realm mRealm=Realm.getDefaultInstance();
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealm(user);
}
});
//刪,事務塊刪
Realm mRealm=Realm.getDefaultInstance();
final RealmResults<Dog> dogs= mRealm.where(Dog.class).findAll();
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog dog=dogs.get(5);
dog.deleteFromRealm();
//刪除第一個資料
dogs.deleteFirstFromRealm();
//刪除最後一個資料
dogs.deleteLastFromRealm();
//刪除位置為1的資料
dogs.deleteFromRealm(1);
//刪除所有資料
dogs.deleteAllFromRealm();
}
});
//同理,也可以使用事務刪
//查,查詢全部
Realm mRealm=Realm.getDefaultInstance();
RealmResults<Dog> dogs = mRealm.where(Dog.class).findAll();
List<Dog> list = mRealm.copyFromRealm(dogs);
//查,條件查詢
Realm mRealm=Realm.getDefaultInstance();
Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
//改
Realm mRealm=Realm.getDefaultInstance();
Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
mRealm.beginTransaction();
dog.setName(newName);
mRealm.commitTransaction();
三.最後
這篇博文算不上是原創,都是參考其它博文寫的,只是為了以後自己有用到Realm時,可以不用再去查資料。
參考博文:
http://blog.csdn.net/fwt336/a…
http://www.cnblogs.com/liushi…
http://www.jianshu.com/p/fdc9…