Android Realm数据库使用与集成指南

  • 本地存储storage集成
  • 创建Realm数据模型
  • 插入和更新数据
  • 模型数据查询
  • 统计数据
  • 分页查询处理
  • 表数据删除操作
  • 总结

Realm 是一款专为移动端和嵌入式场景设计的高性能、跨平台的 对象数据库(NoSQL),由 MongoDB 团队维护。它的核心思想是将数据模型直接映射到对象(如 Java/Kotlin、Swift 等语言中的类),开发者无需编写复杂的 SQL 语句或 ORM 代码即可高效操作数据。
其核心特点:

  1. 对象导向的数据模型
    • 数据直接以原生对象形式存储和操作,无需手动解析或序列化。
    • 支持嵌套对象、集合(List/RealmList)和关系(一对一、一对多)。
  2. 跨平台与多语言支持
    • 支持 Android、iOS、Flutter、React Native、Node.js、Java、Swift、Kotlin 等。
    • 数据文件格式统一,不同平台可共享同一 Realm 数据库文件。
  3. 高性能
    • 基于 C++ 核心引擎,数据直接映射到内存,读写速度接近原生内存操作。
    • 比 SQLite 快 2~10 倍(尤其在复杂查询和大数据集场景下)。

好了费话不多说,下面我们看看在Android中怎么快速、高效的使用Realm;

本地存储storage集成

该库是基于Realm封装的一个简单易用的本地存储库,官方文档集成Realm稍有点麻烦,为了方便使用兼容等问题,因此封装了storage;当前storage sdk已经发布到maven center仓库,可以在项目中直接使用;

在这里插入图片描述

Storage SDK集成,AS最新版本/gradle8.7版本需要在工程的libs.versions.toml添加引用地址

在这里插入图片描述

storage = "1.0.0"

storage = {
    module = "io.github.eyinfo:storage", version.ref = "storage" }

接下来需要在对应模块工程的build.gradle配置了,做以下几项修改

//在头部添加realm-android插件定义
apply plugin: "realm-android"

android {
   
 //常规配置
}

//启用realm同步配置
realm {
   
    syncEnabled = true
}

dependencies {
   
    //这里即可将sdk导入,然后同步一下工程即可
    api libs.storage
}

当然还需要在项目根目录的build.gradle中添加realm的classpath插件引用

#其中libs.versions.toml配置
realmGradlePlugin = "10.19.0"

realm-gradle-plugin = {
    module = "io.realm:realm-gradle-plugin", version.ref = "realmGradlePlugin" }

#然后再在gradle添加配置,这里sync一下进行导入
buildscript {
   
    repositories {
   
        mavenCentral()
    }
    dependencies {
   
        classpath libs.realm.gradle.plugin
    }
}

最后在application设置Realm初始化配置,即可实现快速集成
参考地址:

  • 打开和关闭Realm配置:https://www.mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/java/realm-files/open-and-close-a-realm/
public class MyApplication extends Application {
   
    @Override
    public void onCreate() {
   
        super.onCreate();
        ConfigurationRealm.getInstance().init(
                getApplicationContext(), //需要传入应用上下文
                "storage.realm", //根据需要设置数据库名称
                new UserModules() //导入Realm数据库自定义模型,参考下面说明
        );
    }
}

创建Realm数据模型

官方模型数据文档:https://www.mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/java/model-data/

下面以用户表数据为例,演示如何定义一个Realm数据模型
这里以继承RealmObject为例,还需要添加@RealmClass注解

@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@RealmClass
public class User extends RealmObject 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977475.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(九)趣学设计模式 之 桥接模式!

目录 一、 啥是桥接模式?二、 为什么要用桥接模式?三、 桥接模式的实现方式四、 桥接模式的优缺点五、 桥接模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

Day8 蓝桥杯acw讲解

首先先给大家看一道这个题, 我真的是太喜欢y总了,如果大家也是最近在准备蓝桥杯或者计算机相关的比赛,但是得加一个前提就是必须最好基础真的很好,要不然其实买了课,也没啥太大的用处,其实就可以以我本人举…

谷云科技iPaaS×DeepSeek:构建企业智能集成的核心底座

2025年,DeepSeek大模型的爆发式普及,正引领软件行业实现 “智能跃迁”。从代码生成到系统集成,从企业级应用到消费级产品,自然语言交互能力已成为新一代软件的核心竞争力。据行业分析,超60%的软件企业已启动大模型适配…

java面试项目介绍,详细说明

金三银四少走弯路,Java岗面试冲刺,你与大厂只差这篇文章包括面试准备,帮助大家少走弯路,成功入职大厂,并快速成长落地。 祝大家拿到满意的offer!(把许愿的offer发在评论区,一定会实现的) 主要从四大方面:掌握的主要知识、算法、项目、简历 掌握的主要知识 下面是我看过的资料和…

计算机毕业设计SpringBoot+Vue.js墙绘产品展示交易平台(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

springboot005学生心理咨询评估系统(源码+数据库+文档)

源码地址:学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表(含论文)后台运行截图 1.项目简介 ​ 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了,把现…

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机 前言一、使用命令行(nmcli 命令)配置网络,配置主机名第一步第二步修改主机名称 二、使用图形化界面(nmtui 命令)配…

【运维】内网服务器借助通过某台可上外网的服务器实现公网访问

背景: 内网服务器无法连接公网,但是办公电脑可以连接内网服务器又可以连接公网。 安装软件 1、frp 2、ccproxy 配置 1、内网服务器 # 内网服务器启动frp服务配置文件参考vi frps.ini# frps.ini [common] bind_port 7000# 备注: bind_port端口可以随意配置。配置完…

Pytorch实现论文:基于多尺度融合生成对抗网络的水下图像增强

简介 简介:提出了一种新型的水下图像增强算法,基于多尺度融合生成对抗网络,名为UMSGAN,以解决低对比度和颜色失真的问题。首先经过亮度的处理,将处理后的图像输入设计的MFFEM模块和RM模块生成图像。该算法旨在适应各种水下场景,提供颜色校正和细节增强。 论文题目:Und…

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 😃,生活加油 我站在人潮中央,思考这日日重复的生活。我突然想&#xff0c…

ShenNiusModularity项目源码学习(12:ShenNius.Common项目分析)

ShenNius.Common项目中主要定义功能性的辅助函数类及通用类,供MVC模式、前后端分离模式下的后台服务使用,以提高编程效率。   ApiResult文件内的ApiResult和ApiResult类定义了通用的数据返回格式,包括状态码、返回消息、返回数据等&#x…

【Python量化金融实战】-第1章:Python量化金融概述:1.1量化金融的定义与发展历程

本小节学习建议:掌握Python编程、统计学(时间序列分析)、金融学基础(资产定价理论)三者结合,是进入量化领域的核心路径。 👉 点击关注不迷路 👉 点击关注不迷路 文章目录 1.1 量化金…

STM32的HAL库开发---单通道ADC采集(DMA读取)实验

一、实验简介 正常单通道ADC采集顺序是先开启ADC采集,然后等待ADC转换完成,也就是判断EOC位置1,然后再读取数据寄存器的值。 如果配置了DMA功能,在EOC位被硬件置1后,自动产生DMA请求,然后DMA进行数据搬运…

eclogy后台运维笔记(写的很乱,只限个人观看)

组织权限: 矩阵管理 这个很重要,比如进行流程操作者的选择时,我们进行需要选择财务部的出纳,会计,总经理。我们不能去直接选定一个人,万一这个人离职了,那所有的流程都要手动修改,…

【网络编程】几个常用命令:ping / netstat / xargs / pidof / watch

ping:检测网络联通 1. ping 的基本功能2. ping 的工作原理3. ping 的常见用法4. ping 的输出解释5. ping 的应用场景6. 注意事项 netstat:查看网络状态 1. netstat 的基本功能2. 常见用法3. 示例4. 输出字段解释5. netstat 的替代工具6. 注意事项 xargs&…

自定义Spring Boot Starter(官网文档解读)

摘要 本文将详细介绍自定义 Spring Boot Starter 的完整过程。要构建自定义 Starter,首先需掌握 Spring Boot 中 Auto-configuration 以及相关注解的工作原理,同时了解 Spring Boot 提供的一系列条件注解。在具备这些知识基础后,再按照特定步…

C++和OpenGL实现3D游戏编程【连载23】——几何着色器和法线可视化

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 1、本节实现的内容 上一节课,我们在Blend软件中导出经纬球模型时,遇到了经纬球法线导致我们在游戏中模型光照显示问题,我们在Blender软件中可以通过…

我的技术十年

前言 十年一瞬,2014 年毕业至今,刚好十年。《异类》一书曾提到“一万小时定律”,要成为某个领域的专家,需要 10000 小时,按比例计算就是:如果你每天工作八小时,一周工作五天,那么成…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大,在Java 中如果想要定义一个变 量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表 示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量…

链表-基础训练(二)链表 day14

两两交换链表中的节点 题目示意: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 原先我的思路是图像上的思路,但是我感觉还是很复杂…