【鸿蒙优选三方库】@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/11/1 14:37:59 阅读更多 →
告别AI锐评陷阱:开发者如何构建个人AI回答评估框架

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

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

2026/10/27 18:38:17 阅读更多 →
Word转Markdown实战:跨越格式鸿沟的完整解决方案

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

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

2026/10/27 11:32:53 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/1 0:24:43 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻