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的内部调用规则,和更加复杂的使用.欢迎后续关注我.谢谢
作者:EaskShark 发表于2017/3/24 11:02:01 原文链接
阅读:141 评论:0 查看评论