Realm的入門使用

一.介紹

Realm是一個不錯的手機平臺上的數據庫,支持多種編程環境,如:Java、Object-C、React Native、Swift、Xamari等。html

Realm的官網:https://realm.io/java

github地址:https://github.com/realmandroid

realm-java庫的文檔:https://realm.io/docs/java/la...git

二.使用

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)數據庫操做

能夠使用事務或者事務塊,對於事務塊,有同步的和異步的,若是使用異步事務塊,須要手動關閉github

//增,事務增
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...數據庫

相關文章
相關標籤/搜索