【鸿蒙优选三方库】@ohos/dataorm:让 HarmonyOS 的数据库操作告别手写 SQL
【鸿蒙优选三方库】ohos/dataorm让 HarmonyOS 的数据库操作告别手写 SQL在鸿蒙应用里做数据持久化还在为关系型数据库的 SQL 语句头疼ohos/dataorm基于 Android 圈经典 greenDAO 思路打造用注解定义实体、一行代码操作数据库、链式调用拼装查询——让你专注业务告别样板 SQL。包名ohos/dataorm当前版本v2.3.10-rc.1协议Apache License 2.0安装ohpm install ohos/dataorm仓库https://gitcode.com/CPF-ApplicationTPC/ohos_dataorm一、它解决了什么问题HarmonyOS 应用做本地持久化常见选择是关系型数据库RDB。但直接用原生 RDB Store会遇到这些痛点写 SQL 字符串拼装易出错且难维护表结构变更需要手动处理迁移实体 ↔ 数据库映射全部手写关联查询一对多、多对一写起来痛苦批量操作缺乏统一封装异步/同步命名混乱。ohos/dataorm把 Java/Kotlin 圈最成熟的 greenDAO 思路搬进 HarmonyOS ArkTS用Entity、Id、Column、ToMany等注解声明模型编译期生成 Dao 类链式 API 拼装查询内置迁移、监听、缓存、批量操作工具。二、核心特点特性说明注解式实体定义Entity、Id、NotNull、Unique、Index等完整关联关系ToMany、ToOne、JoinEntity、OrderBy类型转换Convert自定义类型 ↔ 数据库值转换嵌套对象Embedded、Transient、Union链式查询inquiry().where().eq().and().like().list()QueryBuilder 高级去重、JOIN、分页、计数、排序数据库迁移Migration API平滑升级表结构监听器表/库级别数据变更监听多数据库单应用支持多个数据库并存异步/同步统一Async/Sync命名后缀DbUtils 工具读取 rawfile 等常用工具方法三、适用场景本地数据存储用户信息、设置、配置、缓存。业务实体持久化订单、商品、文章、聊天记录。复杂关联模型一对多用户-订单、多对一订单-商品、多对多标签-文章。数据迁移需求版本迭代时表结构平滑升级。需要监听变化跨页面/跨组件响应数据变更。替代手写 SQL减少样板代码与 SQL 注入风险。教学/参考学习鸿蒙 ORM 的完整工程范式。四、快速上手1. 安装ohpminstallohos/dataorm2. 定义实体注解import{Entity,Id,NotNull,Column,Index}fromohos/dataormEntity({tableName:NOTE})exportclassNote{Id()Column({columnName:ID})id:number0NotNull()Column({columnName:TEXT})text:stringColumn({columnName:COMMENT})comment:stringColumn({columnName:DATE})date:number0}3. 初始化数据库import{DataORM,DatabaseOptions}fromohos/dataormconstoptions:DatabaseOptions{name:notes.db,version:1,entities:[Note]}constdbDataORM.init(options)4. 获取 Dao 与基本 CRUDconstnoteDaodb.dao(Note)// 新增constnotenewNote()note.textHello HarmonyOSnote.dateDate.now()constidawaitnoteDao.insert(note)// 查询constlistawaitnoteDao.queryBuilder().where(Note.TEXT.like(%Hello%)).orderDesc(Note.DATE).list()// 更新note.textUpdatedawaitnoteDao.update(note)// 删除awaitnoteDao.deleteById(id)5. 关联查询一对多Entity({tableName:USER})classUser{Id()Column({columnName:ID})id:number0Column({columnName:NAME})name:stringToMany({joinEntity:Order.class})orders:ListOrdernewList()}Entity({tableName:ORDER})classOrder{Id()Column({columnName:ID})id:number0Column({columnName:USER_ID})userId:number0ToOne({joinColumn:USER_ID})user:UsernewUser()}五、亮点能力速览注解声明一切实体、字段、主键、唯一、索引、关联全部用装饰器表达。链式查询类 jOOQ 风格的inquiry()链复杂条件也能优雅拼装。JOIN 支持QueryBuilder 原生支持多表连接查询。数据库迁移版本升级时声明Migration工具帮你做表结构变更。数据监听表级 / 库级监听器跨组件响应数据变化。多数据库并存单应用可同时维护多个独立数据库。Async/Sync 命名规范异步同步接口统一后缀约定清晰。六、为什么值得选它节省样板代码注解 编译期生成 Dao让代码量下降一个数量级。类型安全ArkTS 强类型贯穿定义、操作、查询全链路。迁移无忧版本迭代最怕的老用户数据库炸了Migration API 帮你兜底。关联模型原生一对一、一对多、多对多都能优雅表达。可观测可监听数据变更触发回调UI 联动不愁。如果你的鸿蒙应用需要本地关系型存储又不想与 SQL 字符串死磕到底——ohos/dataorm把 greenDAO 十多年沉淀的 ORM 思想搬到了 HarmonyOS放心用。

相关新闻

177、YOLOv8改进实战:L1范数结构化剪枝实现通道稀疏化,模型体积压缩50%不掉点(代码逐行解析)

177、YOLOv8改进实战:L1范数结构化剪枝实现通道稀疏化,模型体积压缩50%不掉点(代码逐行解析)

177、YOLOv8改进实战:L1范数结构化剪枝实现通道稀疏化,模型体积压缩50%不掉点(代码逐行解析) 从一次深夜调试说起 上个月帮客户做工业缺陷检测,模型部署到边缘设备上,内存卡得死死的。YOLOv8n跑起来帧率只有8fps,客户直接甩了句“这玩意儿还不如人眼快”。当时第一反应…

2026/10/2 9:05:23 阅读更多 →
告别AI锐评陷阱:开发者如何构建个人AI回答评估框架

告别AI锐评陷阱:开发者如何构建个人AI回答评估框架

最近在几个技术社区和开发者群里,经常看到一种讨论模式:大家把同一个问题,比如“如何设计一个高可用的微服务架构”,或者“Python和Go在Web后端开发上怎么选”,同时丢给豆包、ChatGPT、Claude、Kimi等主流AI助手&#…

2026/10/4 0:33:28 阅读更多 →
Word转Markdown实战:跨越格式鸿沟的完整解决方案

Word转Markdown实战:跨越格式鸿沟的完整解决方案

1. 项目概述:从Word到Markdown的格式鸿沟在日常的文档协作、知识管理或者内容发布中,我们常常会遇到一个看似简单却暗藏玄机的需求:把一份精心排版的Word文档转换成Markdown格式。Word是所见即所得的富文本编辑器,承载了复杂的格式…

2026/9/28 19:27:51 阅读更多 →

最新新闻

Java Socket C/S架构路灯控制系统:协议、线程与避坑指南

Java Socket C/S架构路灯控制系统:协议、线程与避坑指南

简介:基于C/S架构的Java模拟路灯控制系统源码,面向学习套接字编程、需完成Java课程大作业的同学。系统使用Swing图形界面库搭建客户端界面,以套接字方式实现双向通信,支持远程开关路灯,同时采集温湿度等模拟环境信息&a…

2026/10/7 16:02:28 阅读更多 →
C#与ABB机器人通讯三大方式:PC SDK/Socket/OPC UA实战指南

C#与ABB机器人通讯三大方式:PC SDK/Socket/OPC UA实战指南

简介:本资源是一套基于C#开发的ABB工业机器人通讯与运动控制完整源码工程,面向自动化工程师、机器人集成开发者及高校机电/自动化专业高年级学生,解决工业现场中C#程序与ABB机器人建立稳定通讯、发送移动指令并实现气囊抛光等特定工艺控制的实…

2026/10/7 16:02:28 阅读更多 →
Java微信小程序商城生产级骨架:登录态穿透+手机号解密+库存原子扣减

Java微信小程序商城生产级骨架:登录态穿透+手机号解密+库存原子扣减

简介:这是一套基于Java微服务架构的企业级B2C商城系统源码,面向中高级Java开发者与全栈工程师,适用于微信小程序、H5、APP多端商城项目的快速搭建与二次开发。资源经百万真实用户验证,支持集群部署,涵盖商品管理、订单…

2026/10/7 16:02:28 阅读更多 →
Linux入门(三)文件内容查看和修改

Linux入门(三)文件内容查看和修改

文章目录1.文件内容查看2.文件内容查找3.Linux链接概念4.VIM编辑器1.文件内容查看 2.文件内容查找 3.Linux链接概念 链接分为硬链接和软链接: 1)硬链接机制用来建立到重要文件的链接,防止误删,多个硬链接只是不同的文件名共同指向…

2026/10/7 16:02:28 阅读更多 →
【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15

【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15

缘由单片机点阵程序怎样让移动后的箭头后面灯熄灭呢? - 24小时必答区 代码简洁源于精妙严谨推敲,看电路写代码,看代码连接电路,看电路改代码,看代码改电路都是基础,初学单片机时,虽然自己有想法能写出来&a…

2026/10/7 16:02:28 阅读更多 →
淋巴细胞目标检测实战:从标注格式转换到YOLO训练避坑指南

淋巴细胞目标检测实战:从标注格式转换到YOLO训练避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 16:01:28 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:13 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →