Ream的入门使用
一.介绍
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.工程gradle
- buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- //1. 添加realm插件
- classpath "io.realm:realm-gradle-plugin:1.2.0"
- }
- }
- //2. app的gradle
- apply plugin: 'realm-android'
- dependencies {
- compile 'io.realm:realm-android-library:1.2.0'
- }
2)数据块操作实体类
- package com.peter.schoolmarket.data.pojo;
- import java.io.Serializable;
- import io.realm.RealmObject;
- import io.realm.annotations.PrimaryKey;
- import io.realm.annotations.Required;
- /**
- * Created by PetterChen on 2017/4/10.
- */
- public class User extends RealmObject implements Serializable {
- @PrimaryKey //主键id
- private int id;//
- private String username;//用户名
- private String password;//用户密码
- private String phone;//手机号
- private String imgUrl;//头像地址
- public User() {
- //
- }
- public void setId(int id) {
- this.id = id;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public void setPhone(String phone) {
- this.phone = phone;
- }
- public void setImgUrl(String imgUrl) {
- this.imgUrl = imgUrl;
- }
- public int getId() {
- return id;
- }
- public String getUsername() {
- return username;
- }
- public String getPassword() {
- return password;
- }
- public String getPhone() {
- return phone;
- }
- public String getImgUrl() {
- return imgUrl;
- }
- }
3)初始化
- //Realm初始化,这是默认初始化,可以自定义初始化
- Realm.init(this);//this表示上下文
- RealmConfiguration config = new RealmConfiguration.Builder().build();//可以修改
- Realm.setDefaultConfiguration(config);
4)数据库操作,可以使用事务或者事务块,对于事务块,有同步的和异步的,如果使用异步事务块,需要手动关闭
- //增,事务增
- Realm realm=Realm.getDefaultInstance();
- realm.beginTransaction();
- realm.copyToRealm(user);
- realm.commitTransaction();
- //增,事务块增
- Realm mRealm=Realm.getDefaultInstance();
- mRealm.executeTransaction(new Realm.Transaction() {
- @Override
- public void execute(Realm realm) {
- realm.copyToRealm(user);
- }
- });
- //删,事务块删
- Realm mRealm=Realm.getDefaultInstance();
- final RealmResults<Dog> dogs= mRealm.where(Dog.class).findAll();
- mRealm.executeTransaction(new Realm.Transaction() {
- @Override
- public void execute(Realm realm) {
- Dog dog=dogs.get(5);
- dog.deleteFromRealm();
- //删除第一个数据
- dogs.deleteFirstFromRealm();
- //删除最后一个数据
- dogs.deleteLastFromRealm();
- //删除位置为1的数据
- dogs.deleteFromRealm(1);
- //删除所有数据
- dogs.deleteAllFromRealm();
- }
- });
- //同理,也可以使用事务删
- //查,查询全部
- Realm mRealm=Realm.getDefaultInstance();
- RealmResults<Dog> dogs = mRealm.where(Dog.class).findAll();
- List<Dog> list = mRealm.copyFromRealm(dogs);
- //查,条件查询
- Realm mRealm=Realm.getDefaultInstance();
- Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
- //改
- Realm mRealm=Realm.getDefaultInstance();
- Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
- mRealm.beginTransaction();
- dog.setName(newName);
- mRealm.commitTransaction();
三.最后
Ream的入门使用的更多相关文章
- Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理
本文是接着上篇博客写的:Spring boot 入门(三):SpringBoot 集成结合 AdminLTE(Freemarker),利用 generate 自动生成代码,利用 DataTable 和 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
随机推荐
- nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections 从用户的角度,http 1.1协议下,由于浏览器默 ...
- a<<=n
a<<=n等价于a=a<<na<<n表示a左移n位(二进制)等价于a乘以2的n次方 a<<=n的含义就是,a等于a乘以2的n次方
- 【Javascript】如何实现点的wave效果 && sinewave效果
参考资料: sinewave效果:http://www.oneapm.com/ci/docker.html?utm_source=BaiduPaid&utm_medium=cpc&ut ...
- 练oj时的小技巧(大多都在oj记录里,这是被忘记的部分)
1. getline()函数,头文件为#include<string> getline(istream &in, string &s):从输入流读入一行到string s ...
- 纯 PHP 代码最好在文件末尾删除 PHP 结束标记
如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. & ...
- NHibernate中几个集合的选择
NHibernate是从Hibernate移植过来的基于NET平台的一个ORM框架,同时跟这框架一起的还有一个开源库,叫做Iesi.Collections,这个库扩展了NET平台下面的几个集合,所谓集 ...
- Mac触控板常用的手势操作
Mac触控板常用的手势操作 学习了:http://topbook.cc/archives/151 一个手指直接点击,类似Windows中鼠标左键功能,同时在苹果Safari等浏览器中,这个手势还 ...
- About stats collected
pg_class.relpages pg_class.reltuples仅仅是近似值,和实际数据会有点误差: 新建空表.首次insert对自己主动收集和更新统计信息,影响的表pg_class\pg_s ...
- TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)
前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep lear ...
- 算法笔记_073:哈密顿回路问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 什么是哈密顿回路? 引用自百度百科: 哈密顿图(哈密尔顿图)(英语:Hamiltonian path,或Traceable path)是一个无向图, ...