Realm Java 简明教程

Realm 是一个轻量的android版本的数据存储库

Realm 是一个轻量的android版本的数据存储库,快速简洁的操作方式,使得其优势得以凸显,我们来看下一个实例:

// 定义需要存储的类,继承自 RealmObject
public class Dog extends RealmObject {@Required // Name cannot be nullprivate String name;private int age;// ... Generated getters and setters ...
}
public class Person extends RealmObject {@Required // Name is not nullableprivate String name;private String imageUrl; // imageUrl is an optional fieldprivate RealmList<Dog> dogs; // A person has many dogs (a relationship)// ... Generated getters and setters ...
}// 像一般的操作方式使用它
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge("1");
Log.v(TAG, "Name of the dog: " + dog.getName());// 获取一个Realm实例
Realm realm = Realm.getInstance(context);// 查找Dog数据库中字段age小于2的所有数据
RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 此时还没有插入存储,因此为0// 保存这个数据
realm.beginTransaction();
realm.copyToRealm(dog);
realm.commitTransaction();// 查询是自动同步更新的
puppies.size(); // => 1//异步查询和更新数据
realm.executeTransaction(new Realm.Transaction() {@Overridepublic void execute(Realm realm) {// 开始查询和修改数据Dog theDog = realm.where(Dog.class).equals("age", 1).findFirst();theDog.setAge(3);}
}, new Realm.Transaction.Callback() {@Overridepublic void onSuccess() {// 原始的查询数据会自动更新puppies.size(); // => 0 because there are no more puppies (less than 2 years old)dog.getAge();   // => 3 数据已经修改}
});

我们来看下如上的流程,发现处理过程比起我们之前使用的数据库方案简单了许多。像litepal的操作已经很简单,但是相对来说还是需要配置一些xml和app参数才可以使用。相对来说,Realm则非常轻量,简单易用,有同步和异步处理方案,代码相对也非常优雅。

开始

  • 下载库或者去官网下载代码
    Realm jar
    Realm src

  • 前期要求

    • 我们仅支持android
    • Android Studio >= 0.8.6 — 使用Eclipse,往下看.
    • 最新的Android SDK版本.
    • JDK 版本 >=7.
    • 我们支持android2.3以上版本
  • 使用
    • 你可以选择手动添加或者使用maven工具实现。
      Maven
      1.请确保您的项目使用jcenter作为一个依赖库 (默认的是最新的android gradle plugin)
      2.在你的工程依赖库增加compile ‘io.realm:realm-android:0.87.4’
      3.使用工具->Android->同步即可
      Jar
      1.下载jar包解压
      2.新建一个工程
      3.复制jar文件夹到app/libs里面
      4.在工程的依赖里面加入包含此库。
  • 混淆要求
    Realm 在编译时生成每个RealmObject 的代理类。为了确保这些类可以在混淆和静态分析工具能运行的,你的混淆语法需要如下去编写:
-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class * { *; }
-dontwarn javax.**
-dontwarn io.realm.**

Api查询

你可以在官方地址查看到所有的api使用接口。
具体Models的使用规则,下一章节再来分析。

Realm Java 简明教程(1)相关推荐

  1. Java简明教程-基本语法上

    基本语法上 认识java 变量 常量 数据类型 String 计算字符串长度 字符串比较 字符串连接 字符串常用提取方法 StringBuilder 运算符 算术运算符 位运算符 逻辑运算符 关系运算 ...

  2. java程序设计简明教程张晓龙_Java网络编程简明教程

    Java网络编程简明教程 网络编程 计算机网络相关概念 计算机网络是两台或更多的计算机组成的网络,同一网络内的任意两台计算机可以直接通信,所有计算机必须遵循同一种网络协议. 互联网 互联网是连接计算机 ...

  3. Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐) 一.手机游戏编写基础 1.手机游戏设计 ...

  4. java 大学简明教程_Simply-Java 《JAVA大学简明教程:实例程序设计》例子及习题源代码 - 下载 - 搜珍网...

    JAVA大学简明教程:实例程序设计/附书源代码/Tutorial01/MovingShapes/BoundedShape.class JAVA大学简明教程:实例程序设计/附书源代码/Tutorial0 ...

  5. 一周极客热文:Java 8简明教程

    该教程将带领你一步一步地认识这门语言Java 8的新特性.通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解.看完这篇教程后,你还将对最新推出的API有一 ...

  6. java程序设计简明教程答案张晓龙_java2简明教程部分课后复习题答案

    JAVA2 简明教程习题答案 第二章 课堂习题 : public class Main { public static void main(String[] args) { //initializat ...

  7. 视频教程-MyBatis简明教程-Java

    MyBatis简明教程 就职于国内知名在线互联网旅游公司,10+互联网开发经验,精通前后端开发 刘志强 ¥29.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订 ...

  8. Java Web 简明教程

    点此查看 所有教程.项目.源码导航 1. 前言 本教程用于介绍Java Web开发入门的方方面面,包括开发环境.工具.网页.Java.数据库等. 本教程写于2016年底,一些内容相对比较陈旧了,新版的 ...

  9. CGIC简明教程(转摘)

    CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库"CGIC"完成Web开发的各种要求. *********************************     基础 ...

最新文章

  1. Android StateListDrawable的坑
  2. 实现MVC模式的Web应用程序
  3. 2015年度最全微课堂笔记精华包
  4. Python列表的切片
  5. 「Luogu1552」[APIO2012]派遣
  6. Netflix测试有线电视频道、字节11亿入股掌阅、快手香港IPO、王者荣耀日活破一亿等|Decode the Week...
  7. 数字电子技术基础第三版杨志忠_阎石数字电子技术基础第6版笔记和课后习题详解...
  8. 同志亦凡人第五季/全集BQueer As Folk 5迅雷下载
  9. java jsonp 接口_jsonp使用,spring4.x对jsonp的支持
  10. 【树链剖分】染色(luogu 2486/金牌导航 树链剖分-3)
  11. 直击标贝科技WAIC2019:深耕语音合成与数据服务 助力语音场景完美落地
  12. 共青城市大力推进国家智慧城市试点建设
  13. 视频时帧率达到15,人眼就感觉是连续的
  14. w10怎么改mysql用户名_win10用户名彻底改为英文的详细操作步骤
  15. linux开机密码取消,如何取消电脑开机密码
  16. RTE 2020 实时互联网大会参会指南——明天我们线上见!
  17. Java中的IO整理
  18. 为什么 Go 语言能在中国这么火?
  19. 5G技术—5G网络架构及关键技术详述测试题目
  20. 对计算机专业的兴趣怎么说,计算机专业特长及爱好怎么写

热门文章

  1. Javascript中英文检测
  2. easyUI整合富文本编辑器KindEditor详细教程
  3. 『无法安装应用程序,因为XXXXXXXX的证书无效』解决方法。
  4. 微信小程序多文件上传(docx,ppt,pdf,zip,jpg···)
  5. 2022T电梯修理考试试题及模拟考试
  6. maniadmin 后台管理模版 HTML
  7. oss批量上传工具_使用oss批量上传图片
  8. Android系统布局——android.R.layout详解
  9. 回溯引用:前后一致匹配
  10. 字符设备驱动模板方式(linux驱动开发篇)