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

news/2025/2/26 21:17:55

  • 本地存储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添加引用地址

在这里插入图片描述

storageRealm = "1.0.0"

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

接下来需要在对应模块工程的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<

http://www.niftyadmin.cn/n/5869175.html

相关文章

第2课 树莓派镜像的烧录

树莓派的系统通常是安装在SD卡上的‌。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,在此期间会格式化SD卡,如果SD卡…

[特殊字符]清华大学:DeepSeek从入门到精通.pdf(清华领航,驾驭DeepSeek,开启AI新境界)

不愧是清华大学出品的deepseek手册&#xff0c;简直是新手 福音&#xff0c;非常实用&#xff01; 这份《DeepSeek&#xff1a;从入门到精通》手册从基础到高 阶&#xff0c;手把手教你玩转DeepSeek&#xff0c;特别适合刚入门的小白&#xff0c;拿来就能用&#xff01; 1.Deep…

Git系列之Git Reset

目录 Git Reset 归属系列&#xff1a; Git Reset 是git中最常用的命令&#xff0c;但也是最危险&#xff0c;最容易被误用的命令。 git reset [<mode>] [<commit ID>], it means thatgit reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<…

Java+SpringBoot+Vue+数据可视化的铁路售票自动分配座位系统(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在经济全球化与信息时代的滚滚浪潮之下&#xff0c;互联网技术以令人惊叹的速度迅猛发展…

【学习笔记】计算机网络(四)

第4章 网络层 文章目录 第4章 网络层4.1 网络层的几个重要概念4.1.1 网络层提供的两种服务虚电路服务&#xff08;Virtual Circuit Service&#xff09;数据报服务&#xff08;Datagram Service&#xff09; 4.1.2 网络层的两个层面 4.2 网际协议 IP - IPv44.2.1 虚拟互连网络4…

redis小记

redis小记 下载redis sudo apt-get install redis-server redis基本命令 ubuntu16下的redis没有protected-mode属性&#xff0c;就算sudo启动&#xff0c;也不能往/var/spool/cron/crontabs写计划任务&#xff0c;感觉很安全 #连接到redis redis-cli -h 127.0.0.1 -p 6379 …

游戏引擎学习第123天

仓库:https://gitee.com/mrxiao_com/2d_game_3 黑板&#xff1a;线程同步/通信 目标是从零开始编写一个完整的游戏。我们不使用引擎&#xff0c;也不依赖任何库&#xff0c;完全自己编写游戏所需的所有代码。我们做这个节目不仅是为了教育目的&#xff0c;同时也是因为编程本…