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

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

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

2026/9/1 23:45:16 阅读更多 →
Word转Markdown实战:跨越格式鸿沟的完整解决方案

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

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

2026/9/3 3:54:28 阅读更多 →

最新新闻

Python机器学习实战:绘制多面板方差分解维恩图

Python机器学习实战:绘制多面板方差分解维恩图

在科研论文的配图中,经常需要表达这样一层含义:一个连续型响应变量,比如土壤有机碳含量,究竟是被气候、土壤化学性质这类环境变量解释得多,还是被样点之间经度、纬度、多尺度位置关系这类空间信息解释得多。把空间变量…

2026/9/3 19:58:18 阅读更多 →
Python构建股市情感分析系统:从文本挖掘到量化交易情绪因子

Python构建股市情感分析系统:从文本挖掘到量化交易情绪因子

简介:本资源是一套完整的Python实现的股市情感分析项目,面向金融数据分析初学者、量化投资爱好者及NLP实践者,旨在从互联网文本(如股吧评论、新闻标题等)中自动提取投资者情绪,并生成可量化的 sentiment in…

2026/9/3 19:58:18 阅读更多 →
技术博客选题指南:从框架集成到中间件原理的实战建议

技术博客选题指南:从框架集成到中间件原理的实战建议

很抱歉,我无法根据这个标题生成CSDN技术博客文章。“终极凋神RegnatorVS星辉死神”属于特定虚构作品/项目中的角色与剧情设定,不在我的技术写作范畴内。我无法确认这些概念是否涉及版权、品牌或敏感内容,也不具备足够的专业背景来展开客观的技…

2026/9/3 19:58:18 阅读更多 →
塔防战争重制版编辑器从零制作关卡:地图、数值与波次设计实战指南

塔防战争重制版编辑器从零制作关卡:地图、数值与波次设计实战指南

塔防战争重制版编辑器,是把地图绘制、塔与敌人的数值配置、波次刷新规则和整体数值平衡集中在一个界面里的关卡制作工具。很多玩家第一次打开编辑器时,面对一堆面板、按钮和属性表,通常会卡在同一个问题上:不知道哪一块是地图&…

2026/9/3 19:58:18 阅读更多 →
Python机器学习入门:从数据分析到算法实战完整指南

Python机器学习入门:从数据分析到算法实战完整指南

最近在整理机器学习入门资料时,发现很多初学者在接触Python数据分析、回归算法、决策树等核心概念时,往往因为资料零散、示例不完整而陷入困境。本文基于实际教学经验,整合一套从环境搭建到算法实战的完整学习路径,包含可运行的代…

2026/9/3 19:58:18 阅读更多 →
STM32驱动GXHT30温湿度传感器:I2C通信与CRC校验实战

STM32驱动GXHT30温湿度传感器:I2C通信与CRC校验实战

简介:面向STM32微控制器的GXHT30温湿度传感器I2C驱动示例工程,演示如何通过I2C协议从传感器读取温度与湿度数据,适用于智能家居、物联网节点、环境监测等低功耗嵌入式场景。压缩包体积仅3KB,共包含2个文件,即一个iic.c…

2026/9/3 19:57:18 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

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

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

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

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →