简介

realm是一个跨平台移动数据库引擎,支持iOS、OS
X(Objective-C和Swift)、Android以及React Native。根据官网的介绍来说,是比Sqlite存储更加快读、高效。现在来的介绍一下realm环境的配置以及简单的使用。

官网:realm
github:realm-java
官方教程:realm docs

Realm使用

集成

  • 在Project目录下的build.gradle中做一下修改:

    buildscript {repositories {    jcenter()}dependencies {    classpath 'com.android.tools.build:gradle:2.2.1'    classpath "io.realm:realm-gradle-plugin:2.2.0"    // NOTE: Do not place your application dependencies here; they belong    // in the individual module build.gradle files}

}
```


  • 在module目录下的build.gradle中添加:

    apply plugin: 'realm-android'

使用

  • 初始化

    Application中进行初始化

public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
initRealm();
}

    private void initRealm() {        Realm.init(this);    }

}
注:不要忘记在manifest中注册Application```


  • 创建实体类

    创建一个User实体类,需要extedns RealmObject

    public class User extends RealmObject {    private String name;    private int age;    //get set方法省略}

    或者 implements RealmModel同时加上注解@RealmClass

    @RealmClass

public class User implements RealmModel {
private String name;
private int age;
//get set方法省略
}
```

  • 插入数据
Realm realm = Realm.getDefaultInstance();     /***写法一***/     realm.executeTransaction(new Realm.Transaction() {         @Override         public void execute(Realm realm) {             User user = realm.createObject(User.class);             user.setName(name);             user.setAge(Integer.parseInt(age));             //也可以使用下面的方法             /*             User user = new User();             user.setName(name);             user.setAge(Integer.parseInt(age));             realm.copyToRealm(user);             */         }     });     /* 写法二     realm.executeTransactionAsync(new Realm.Transaction() {         @Override         public void execute(Realm realm) {             User user = realm.createObject(User.class);             user.setName(name);             user.setAge(Integer.parseInt(age));         }     }, new Realm.Transaction.OnSuccess() {         @Override         public void onSuccess() {             //成功回调         }     });*/     //写法三     /*realm.beginTransaction();     User user = realm.createObject(User.class);     user.setName(name);     user.setAge(Integer.parseInt(age));     realm.commitTransaction();*/
  • 更新数据

    这里是先根据name去查询到对应的记录,然后将所有记录的age修改为10。
    .where(Class clazz)表示要查询哪个类的数据。
    equalTo(String fieldName, String value)表示查询fieldName值为value的记录。

    findAll() 表示返回符合该条件的所有记录。返回类型为RealmResults.但是我们也可以直接用List<?>接收。

        Realm realm = Realm.getDefaultInstance();    final User user = new User();    user.setName(name);    user.setAge(Integer.parseInt(age));    realm.executeTransaction(new Realm.Transaction() {        @Override        public void execute(Realm realm) {            List data = realm.where(User.class).equalTo("name",name).findAll();            if (data.size() == 0){                print("未查询到对应的记录");                return;            }            //将所有姓名为{name}的年龄修改为10            for (User user : data) {                user.setAge(10);            }            print("更新完成");        }    });
  • 查询数据
    这里只展示了查询所有数据,根据条件查询数据可以参考刚才的更新数据。

Realm realm = Realm.getDefaultInstance();
RealmQuery query = realm.where(User.class);
List data = query.findAll();
```

  • 删除数据

    Realm realm = Realm.getDefaultInstance();    realm.executeTransaction(new Realm.Transaction() {        @Override        public void execute(Realm realm) {            RealmResults results = realm.where(User.class).findAll();            if (results.size() == 0) {                print("无数据");                return;            }            //删除第一条数据            results.deleteFirstFromRealm();            print("删除成功");            //删除最后一条数据            //results.deleteLastFromRealm();        }    });

源码地址:RealmExample

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. 蓝牙socket读取数据需读多次才读全
  3. Android车辆运动轨迹平滑移动(高仿滴滴打车)最佳实践
  4. Android中contentProvider的用途
  5. Android四大组件之ContentProvider
  6. Android列表组件ListView使用详解之动态加载或修改列表数据
  7. 天天记录 - Android(安卓)addView源码分析
  8. SQLite数据库相关(三) SQLiteOpenHelper类
  9. [导入]2010-03-02 传智播客—Android(四)数据存储之四ContentProvi

随机推荐

  1. android:imeOptions 标签
  2. Android笔记1——Android(安卓)SDK自带的
  3. android与tomcat服务器交互实例
  4. VMware Workstation Pro 16 安装教程
  5. 异步请求、 npm 与 node模块的学习
  6. 0317作业
  7. 图文详细过程Linux 使用yum安装telnet-se
  8. asp与php中定时生成页面的思路与代码
  9. gitlab报错:error: RPC failed; result=2
  10. 看跨境电商很火,小白想入行赚点钱要怎么做