Realm_Android使用详解(一)

Realm数据库听说的时候是在2016年初左右吧,还是听一个网易的哥们说起.才了解到的.Realm是一个MVCC的数据库.底层使用C++写的.MVCC指的是多版本并发控制.

本篇文章先去带大家如何使用Realm,下篇介绍Realm的内部规则.

二叉树上图先,看下效果
这里写图片描述

环境支持

  • Android Studio 版本1.5.1 or 更高
  • JDK 版本 7.0 or 更高
  • Android API 版本 9 or 更高 (Android 2.3 and 之上)

我们不在支持eclipse作为IDE;所以请使用Android Studio;

安装使用

通过Gradle plugin安装使用

提示1:添加文件路径是你的project 的 build.gradle 文件.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:3.0.0"
    } }

文件位置如图所示:
这里写图片描述

提示2:应用realm-android插件app的build.gradle 文件的顶部.

apply plugin: ‘realm-android’

文件位置如图所示:
这里写图片描述

Realm 浏览器

现在开发出了一个mac版本的Ream数据浏览器,用于查看和编辑,这个应用不支持windows和linux,windows的同学可以使用stetho chrom插件进行查看调试.由facebook产出.至于使用方法可以看我的 如何用googleChrome调试Android程序呢?_Stetho.
macRealm浏览器下载地址.github下载地址

代码实现

第一步:全局初始化Realm

package cn.yky.realm;

import android.app.Application;

import io.realm.Realm;

/**  * Created by yukuoyuan on 2017/3/24.  */

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this);
    } }

第二步:获取当前Realm对象在Activity或者Fragment中

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //初始化Realm
        realm = Realm.getDefaultInstance();
    }

第三步:我们的自定义的Models必须继承RealmObject,如示例代码

package cn.yky.realm;

import io.realm.RealmObject;

/**
 * Created by yukuoyuan on 2017/3/24.
 * 这是一个Realm 的Modal
 */

public class User extends RealmObject {
    public String Name;
    public int Age;
    public int sex;

}

第四步:进入我们的逻辑层,增删改查如代码所示

   /**
     * 这是一个添加一条数据的方法
     */
    public void add() {
        i = i + 1;
        realm.beginTransaction();
        User user = realm.createObject(User.class); // Create a new object
        user.Name = "王祖贤";
        user.Age = 23 + i;
        user.sex = 0;
        realm.commitTransaction();
    }
 /**
     * 这是一个删除一条数据的方法
     */
    public void delete() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        for (User guest : guests) {
            if (guest.Age > 28) {
                guest.deleteFromRealm();
            }
        }
        realm.commitTransaction();
    }
   /**
     * 这是一条更新的方法
     */
    public void updata() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        for (User guest : guests) {
            guest.Age = 48;
        }
        realm.commitTransaction();
    }
 /**
     * 这是一个一个查询的方法
     */
    public void query() {
        realm.beginTransaction();
        RealmResults<User> guests = realm.where(User.class).equalTo("sex", 0).findAll();
        realm.commitTransaction();
        tvShow.setText("");
        String show = "";
        for (User guest : guests) {
            show = show + "/\n" + guest.Name + "**" + guest.Age + "**" + guest.sex;
        }
        tvShow.setText(show);
    }

该示例代码我已经上传到github:github机票
后续我会讲解,Realm的内部调用规则,和更加复杂的使用.欢迎后续关注我.谢谢

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值