安卓日记——Realm快速上手

作者: 饥渴计科极客杰铿 | 来源:发表于2016-06-30 23:22 被阅读796次

Realm作为一种新兴的数据库以其变态的速度吸引了我们,摆图看看它有多快


这里写图片描述

力压主流Sqlite,所以学习Realm就很有必要了

1.在项目的build.gradle=>buildscript=>dependencies添加

classpath "io.realm:realm-gradle-plugin:1.0.1"

添加后效果如下


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        classpath "io.realm:realm-gradle-plugin:1.0.1"
    }
}

2.在moudle的build.gradule里头部添加

apply plugin: 'realm-android'

3.开始使用Realm

RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
        Realm.setDefaultConfiguration(realmConfig);
realm=Realm.getDefaultInstance();

最好把realm设为Realm类型的全局变量因为最后要把它关闭掉
我这里只介绍最简单的方法,至于配置表名,表的版本这里不详细介绍

4.声明开始事务

        realm.beginTransaction();
        //TODO
        realm.commitTransaction();

开始前要beginTransaction,结束后要commitTransaction
不过还有另外两种方式

第一种同步执行

realm.executeTransaction(new Realm.Transaction() {
                @Override
                public void execute(Realm realm) {
                    //TODO         
                }
            });

第二种异步执行

                realmAsyncTask=realm.executeTransactionAsync(new Realm.Transaction() {
                @Override
                public void execute(Realm realm) {
                //TODO
                }

            });

为什么要返回一个 RealmAsyncTask的值呢,因为如果你在跳转Activity之后想中止这个过程则要把realmAsyncTask 关掉,就像网络请求一样。

5.新建实体

public class Country extends RealmObject {
    private String name;
    private int population;

    public Country() { }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPopulation() {
        return population;
    }

    public void setPopulation(int population) {
        this.population = population;
    }
}

实体必须是继承自RealmObject

6.增加

        realm.beginTransaction();
        Country country=realm.createObject(Country.class);
        country.setPopulation(1000000);
        country.setName("China");
        realm.commitTransaction();

7.查询

RealmResults<Country>realmResults =realm.where(Country.class).findAll();

支持以下几种条件查询

  • between()、greaterThan()、lessThan()、greaterThanOrEqualTo() 和
    lessThanOrEqualTo()
  • equalTo() 和 notEqualTo()
  • contains()、beginsWith() 和 endsWith()
  • isNull() 和 isNotNull()
  • isEmpty() 和 isNotEmpty()
  • or()和and()
  • not()

若想结果排序,可将findall换成findAllSorted

        //结果对poppulation升序排序
        RealmResults<Country> results3 =
                realm.where(Country.class)
                        .findAllSorted("population", Sort.ASCENDING);

如果是降序则要把Sort.ASCENDING换成Sort.DESCENDING**

8.删除

无论是删除和修改都是基于查询语句的

        realm.beginTransaction();
        //删除查询到的所有项
        results3.deleteAllFromRealm();
        //删除查询到的location为2的项
        results3.deleteFromRealm(2);
        //删除查询到的第一项
        results3.deleteFirstFromRealm();
        //删除查询到的最后一项
        results3.deleteLastFromRealm();
        realm.commitTransaction();

9.修改

        realm.beginTransaction();
        //将loacation为0的项的population改为13000000
        Country mCountry=results3.get(0);
        mCountry.setPopulation(13000000);
        realm.commitTransaction();

总结

Realm虽然速度快,但他的扩展性不及其实sqlite的库,导致有些人不喜欢用,这世界上并没有完美的东西,至于你们怎么选择就看你们自己的取舍吧

相关文章

  • 安卓日记——Realm快速上手

    Realm作为一种新兴的数据库以其变态的速度吸引了我们,摆图看看它有多快 力压主流Sqlite,所以学习Realm...

  • realm使用

    realm使用 安装 yarn add realm react-native link 如果安卓出现import ...

  • android 进行https网络请求的一些参考文章

    安卓进阶第四篇之使用Retrofit进行Http、Https网络请求(快速上手)https://www.jians...

  • 飞修培训手册(门店)

    什么是飞修 “飞修”是用来帮助门店快速高效地解决设备故障的小工具,上手快速,流程简单。 操作流程 安装APP 安卓...

  • iOS Realm 10分钟上手文档

    本篇内容全部出于 Realm英文文档 与 Realm中文文档,只是为了给自己和想要快速上手的同学一个参看的范本,...

  • 关于android webview手势的一个小问题 关键字onT

    我不是一个安卓开发者,但最近却在上手一个别人写好的安卓项目,虽然不是什么大项目,难度不高~ 但是我这样一个安卓盲人...

  • 安卓应用测试工具的测试过程

    目前安卓应用的安全现状,随着安卓应用的快速暴涨,相应的漏洞也逐渐增加。同时,市场上也出现了专业的安卓应用测试工具:...

  • Day 2

    今天跟学霸请教了安卓系统的相关问题,也看了看其他组的项目,不过以前没有学过安卓,上手还有一些难度,我们还在解决遇到...

  • React Native 升级realm1.8.3版本后报错

    报错表现: 今天在升级realm 到最新的1.8.3版本后,在打包安卓apk时候报错 google了好长时间,没有...

  • Realm swift 工具类(直接拿去用)

    一个封装了realm核心的工具类,直接上手使用 这不是一篇介绍realm基础知识的文章,而是一个封装了realm核...

网友评论

    本文标题:安卓日记——Realm快速上手

    本文链接:https://www.haomeiwen.com/subject/agsfjttx.html