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

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

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

2026/8/6 17:19:26 阅读更多 →
Word转Markdown实战:跨越格式鸿沟的完整解决方案

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

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

2026/8/6 17:19:26 阅读更多 →

最新新闻

5分钟上手draw.io桌面版:完全免费的跨平台图表工具实战指南

5分钟上手draw.io桌面版:完全免费的跨平台图表工具实战指南

5分钟上手draw.io桌面版:完全免费的跨平台图表工具实战指南 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 还在为寻找一款既专业又免费的图表软件而烦恼吗&#xf…

2026/8/6 18:04:46 阅读更多 →
自动售货机RK3588端侧AI推理优化实战:从YOLOv11n部署到多路视频流工程落地

自动售货机RK3588端侧AI推理优化实战:从YOLOv11n部署到多路视频流工程落地

2026年被业界定义为“端侧AI规模化落地的元年”,这一趋势在自动售货机行业尤为显著。传统云端推理方案面临延迟不稳定、带宽成本高、网络依赖性强三大瓶颈,而端侧AI方案正在快速替代这一模式-1。IDC数据显示,全球已有超过40%的AI推理负载从云…

2026/8/6 18:04:46 阅读更多 →
告别重复CRUD:MyBatis-Plus如何让Java开发者专注业务逻辑

告别重复CRUD:MyBatis-Plus如何让Java开发者专注业务逻辑

告别重复CRUD:MyBatis-Plus如何让Java开发者专注业务逻辑 【免费下载链接】mybatis-plus mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.com 项目地址: https://gitcode.com/baomidou/mybatis-plus …

2026/8/6 18:04:46 阅读更多 →
Playwright 处理 iframe 切换的 3 个真实陷阱,90% 的人栽在第一个

Playwright 处理 iframe 切换的 3 个真实陷阱,90% 的人栽在第一个

在 Playwright 自动化中,iframe 是最常见的"看起来简单但坑很深"的场景。本文基于实际开发经验,总结 3 个高频陷阱及其解决方案,涵盖 frame_locator 的正确用法、iframe 加载时序问题、嵌套与跨域场景下的会话保持。前置知识&#…

2026/8/6 18:04:46 阅读更多 →
分享乌鲁木齐没考上高中可以上的好技工学校

分享乌鲁木齐没考上高中可以上的好技工学校

中考后的迷茫与选择每年中考结束,不少学生和家长开始发愁,若孩子没考上高中,未来该何去何从?在乌鲁木齐,选择一所合适的技工学校成为很多人的新出路。数据显示,如今就业市场对技能型人才需求呈上升趋势&…

2026/8/6 18:04:46 阅读更多 →
【全栈入门】一文看懂前端、后端与数据库是怎么“串门”的?

【全栈入门】一文看懂前端、后端与数据库是怎么“串门”的?

【全栈入门】一文看懂前端、后端与数据库是怎么“串门”的?(附 Flask 轻量实战源码)摘要:对于刚接触 Web 开发的新手来说,“全栈”听起来像是一个高深莫测的词汇。页面上的按钮点击后,数据是怎么飞到服务器…

2026/8/6 18:03:45 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →