【鸿蒙优选三方库】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放心用。