一.介绍

Realm是一个不错的手机平台上的数据库,支持多种编程环境,如:Java、Object-C、React Native、Swift、Xamari等。

Realm的官网:https://realm.io/

github地址:https://github.com/realm

realm-java库的文档:https://realm.io/docs/java/latest/

二.使用

1)配置:

  1. //1.工程gradle
  2. buildscript {
  3. repositories {
  4. jcenter()
  5. }
  6. dependencies {
  7. //1. 添加realm插件
  8. classpath "io.realm:realm-gradle-plugin:1.2.0"
  9. }
  10. }
  11.  
  12. //2. app的gradle
  13. apply plugin: 'realm-android'
  14.  
  15. dependencies {
  16. compile 'io.realm:realm-android-library:1.2.0'
  17. }

2)数据块操作实体类

  1. package com.peter.schoolmarket.data.pojo;
  2.  
  3. import java.io.Serializable;
  4.  
  5. import io.realm.RealmObject;
  6. import io.realm.annotations.PrimaryKey;
  7. import io.realm.annotations.Required;
  8.  
  9. /**
  10. * Created by PetterChen on 2017/4/10.
  11. */
  12.  
  13. public class User extends RealmObject implements Serializable {
  14. @PrimaryKey //主键id
  15. private int id;//
  16. private String username;//用户名
  17. private String password;//用户密码
  18. private String phone;//手机号
  19. private String imgUrl;//头像地址
  20.  
  21. public User() {
  22. //
  23. }
  24.  
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28.  
  29. public void setUsername(String username) {
  30. this.username = username;
  31. }
  32.  
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36.  
  37. public void setPhone(String phone) {
  38. this.phone = phone;
  39. }
  40.  
  41. public void setImgUrl(String imgUrl) {
  42. this.imgUrl = imgUrl;
  43. }
  44.  
  45. public int getId() {
  46. return id;
  47. }
  48.  
  49. public String getUsername() {
  50. return username;
  51. }
  52.  
  53. public String getPassword() {
  54. return password;
  55. }
  56.  
  57. public String getPhone() {
  58. return phone;
  59. }
  60.  
  61. public String getImgUrl() {
  62. return imgUrl;
  63. }
  64. }

3)初始化

  1. //Realm初始化,这是默认初始化,可以自定义初始化
  2. Realm.init(this);//this表示上下文
  3. RealmConfiguration config = new RealmConfiguration.Builder().build();//可以修改
  4. Realm.setDefaultConfiguration(config);

4)数据库操作,可以使用事务或者事务块,对于事务块,有同步的和异步的,如果使用异步事务块,需要手动关闭

  1. //增,事务增
  2. Realm realm=Realm.getDefaultInstance();
  3. realm.beginTransaction();
  4. realm.copyToRealm(user);
  5. realm.commitTransaction();
  6.  
  7. //增,事务块增
  8. Realm mRealm=Realm.getDefaultInstance();
  9. mRealm.executeTransaction(new Realm.Transaction() {
  10. @Override
  11. public void execute(Realm realm) {
  12.  
  13. realm.copyToRealm(user);
  14.  
  15. }
  16. });
  17.  
  18. //删,事务块删
  19. Realm mRealm=Realm.getDefaultInstance();
  20. final RealmResults<Dog> dogs= mRealm.where(Dog.class).findAll();
  21. mRealm.executeTransaction(new Realm.Transaction() {
  22. @Override
  23. public void execute(Realm realm) {
  24.  
  25. Dog dog=dogs.get(5);
  26. dog.deleteFromRealm();
  27. //删除第一个数据
  28. dogs.deleteFirstFromRealm();
  29. //删除最后一个数据
  30. dogs.deleteLastFromRealm();
  31. //删除位置为1的数据
  32. dogs.deleteFromRealm(1);
  33. //删除所有数据
  34. dogs.deleteAllFromRealm();
  35. }
  36. });
  37. //同理,也可以使用事务删
  38.  
  39. //查,查询全部
  40. Realm mRealm=Realm.getDefaultInstance();
  41. RealmResults<Dog> dogs = mRealm.where(Dog.class).findAll();
  42. List<Dog> list = mRealm.copyFromRealm(dogs);
  43.  
  44. //查,条件查询
  45. Realm mRealm=Realm.getDefaultInstance();
  46. Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
  47.  
  48. //改
  49. Realm mRealm=Realm.getDefaultInstance();
  50. Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
  51. mRealm.beginTransaction();
  52. dog.setName(newName);
  53. mRealm.commitTransaction();

三.最后

这篇博文算不上是原创,都是参考其它博文写的,只是为了以后自己有用到Realm时,可以不用再去查资料。
参考博文:
 

Ream的入门使用的更多相关文章

  1. Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理

    本文是接着上篇博客写的:Spring boot 入门(三):SpringBoot 集成结合 AdminLTE(Freemarker),利用 generate 自动生成代码,利用 DataTable 和 ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  5. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  6. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  7. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  8. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  9. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

随机推荐

  1. nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile

    参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections 从用户的角度,http 1.1协议下,由于浏览器默 ...

  2. a<<=n

    a<<=n等价于a=a<<na<<n表示a左移n位(二进制)等价于a乘以2的n次方 a<<=n的含义就是,a等于a乘以2的n次方

  3. 【Javascript】如何实现点的wave效果 && sinewave效果

    参考资料: sinewave效果:http://www.oneapm.com/ci/docker.html?utm_source=BaiduPaid&utm_medium=cpc&ut ...

  4. 练oj时的小技巧(大多都在oj记录里,这是被忘记的部分)

    1. getline()函数,头文件为#include<string> getline(istream &in, string &s):从输入流读入一行到string s ...

  5. 纯 PHP 代码最好在文件末尾删除 PHP 结束标记

    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. & ...

  6. NHibernate中几个集合的选择

    NHibernate是从Hibernate移植过来的基于NET平台的一个ORM框架,同时跟这框架一起的还有一个开源库,叫做Iesi.Collections,这个库扩展了NET平台下面的几个集合,所谓集 ...

  7. ​Mac触控板常用的手势操作

    ​Mac触控板常用的手势操作 学习了:http://topbook.cc/archives/151   一个手指直接点击,类似Windows中鼠标左键功能,同时在苹果Safari等浏览器中,这个手势还 ...

  8. About stats collected

    pg_class.relpages pg_class.reltuples仅仅是近似值,和实际数据会有点误差: 新建空表.首次insert对自己主动收集和更新统计信息,影响的表pg_class\pg_s ...

  9. TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)

    前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep lear ...

  10. 算法笔记_073:哈密顿回路问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 什么是哈密顿回路? 引用自百度百科: 哈密顿图(哈密尔顿图)(英语:Hamiltonian path,或Traceable path)是一个无向图, ...