鸿蒙开发仓颉语言:数据库框架——dataORM4cj
dataORM4cj 是一个基于ORM的仓颉版终端sqlite数据库框架dataORM4cj 是一个基于ORM的仓颉版终端sqlite数据库框架。
·
📌往期推文全新看点(文中附带最新·鸿蒙全栈学习笔记)
📃 鸿蒙(HarmonyOS)北向开发知识点记录~
📃 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
📃 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
📃 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
📃 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
📃 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
📃 记录一场鸿蒙开发岗位面试经历~
📃 持续更新中……
介绍
dataORM4cj 是一个基于ORM的仓颉版终端sqlite数据库框架
特性
- 支持注解开发
- 支持标准数据库套件
- 支持Long,object包装类型
- 支持查询,删除,修改,新增功能
- 支持事务功能
- 支持索引注解 @Index, @Unique
- 支持基础属性注解 @Entity, @Id,@NotNull,@Transient
- 支持DaoMaster,DaoSessio,xxxDao实现类生成
软件架构
源码目录
├─AppScope
├─doc
├─entry // UI模块
│ └─src
│ └─main
│ ├─cangjie // UI测试代码
│ │ └─src
│ └─resources // UI测试资源
├─greendao_core // 核心代码模块
│ └─src
│ └─main
│ ├─cangjie // 核心代码
│ │ └─src
│ └─resources
├─greendao_annotation // 注解生成器模块
│ └─src
│ └─main
│ ├─cangjie // 注解代码
│ │ └─src
│ └─generator // 生成器代码
│ └─src
└─hvigor // 构建工具目录
使用说明
编译运行
1、使用 DevEco Studio NEXT Developer Beta2(Build Version: 5.0.3.500) 构建工程项目, 生成 hap 包,端测请使用镜像 CangjieUIB100 版本的mate60手机
功能示例
用例代码在entry目录下 功能示例
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights resvered.
*/
package ohos_app_cangjie_entry
import ohos.base.*
import ohos.ability.*
import ohos.window.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import ohos.router.*
import ohos.prompt_action.PromptAction
import ohos.relational_store.*
import ohos.state_macro_manage.Entry
import ohos.state_macro_manage.Component
import ohos.state_macro_manage.State
import ohos.state_macro_manage.r
var userDao: UserDao = unsafe { zeroValue<UserDao>() }
var studentDao: StudentDao = unsafe { zeroValue<StudentDao>() }
var teacherDao: TeacherDao = unsafe { zeroValue<TeacherDao>() }
var personDao: PersonDao = unsafe { zeroValue<PersonDao>() }
@Entry
@Component
class MyView {
protected override func onAppear() {
let db = getRdbStore(getStageContext(getGlobalAbilityContext()), StoreConfig("RdbTest.db", SecurityLevel.S1))
var daoMaster: DaoMaster = DaoMaster(db)
DaoMaster.dropAllTables(daoMaster,true)
DaoMaster.createAllTables(daoMaster, true)
var daoSession: DaoSession = daoMaster.newSession()
userDao = daoSession.getUserDao()
studentDao = daoSession.getStudentDao()
teacherDao = daoSession.getTeacherDao()
personDao = daoSession.getPersonDao()
let arr = [
User(Option<Int64>.None, 1, "lisi", "111"),
User(Option<Int64>.None, 2, "zhangsan", "222"),
User(Option<Int64>.None, 3, "wangwu", "333"),
User(Option<Int64>.None, 4, "zhaoliu", "444"),
User(Option<Int64>.None, 5, "tianqi", "555")
]
for (item in arr) {
userDao.insertOrReplace(item)
}
let arr1 = [
Student("1", "lisi", "111"),
Student("2", "zhangsan", "222"),
Student("3", "wangwu", "333"),
Student("4", "zhaoliu", "444"),
Student("5", "tianqi", "555")
]
for (item in arr1) {
studentDao.insertOrReplace(item)
}
let arr2 = [
Teacher(Option<Int64>.None,"zhang san", "西安市雁塔区科技二路", 28,165,110,96.326),
Teacher(Option<Int64>.None,"li四si", "西安市雁塔区科技二路", 28,163,110,98.309),
Teacher(Option<Int64>.None,"王腾", "西安市雁塔区科技五路", 29,185,170,94.46)
]
for (item in arr2) {
teacherDao.insertOrReplace(item)
}
}
let scroller = Scroller()
func build() {
// Row {
Scroll(this.scroller){
Column {
Text("--Greendao 简单用例--").height(80)
Divider().color(0x000000).strokeWidth(1).margin(top: 10, bottom: 10)
Row() {
Button("查询").onClick {
evt => Router.push(url: "PageQuery")
}.fontSize(20).height(40)
Button("新增").onClick {
evt => Router.push(url: "PageAdd")
}.fontSize(20).height(40)
Button("事务修改").onClick {
evt => Router.push(url: "PageUpdateInTx")
}.fontSize(20).height(40)
Button("新增").onClick {
evt => Router.push(url: "PageObjectAdd")
}.fontSize(20).height(40)
}
Text("--Greendao HLT用例--").height(80)
Divider().color(0x000000).strokeWidth(1).margin(top: 10, bottom: 10)
Button("HLT用例 - L0")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL0")}
Button("HLT用例 - L1")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL1")}
Button("HLT用例 - L2")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL2")}
//HLT
// Button("DeleteTest01").onClick {Router.push(url: "DeleteTest01")}
// Button("AddTest01").onClick {Router.push(url: "AddTest01")}
// Button("AddTest02").onClick {Router.push(url: "AddTest02")}
// Button("QueryTest01").onClick {Router.push(url: "QueryTest01")}
// Button("QueryTest02").onClick {Router.push(url: "QueryTest02")}
// Button("QueryTest03").onClick {Router.push(url: "QueryTest03")}
// Button("UpdateTest01").onClick {Router.push(url: "UpdateTest01")}
}.width(100.percent).margin(top: 5)
}
// }
}
}
介绍
dataORM4cj 是一个基于ORM的仓颉版终端sqlite数据库框架
特性
- 支持注解开发
- 支持标准数据库套件
- 支持Long,object包装类型
- 支持查询,删除,修改,新增功能
- 支持事务功能
- 支持索引注解 @Index, @Unique
- 支持基础属性注解 @Entity, @Id,@NotNull,@Transient
- 支持DaoMaster,DaoSessio,xxxDao实现类生成
软件架构
源码目录
├─AppScope
├─doc
├─entry // UI模块
│ └─src
│ └─main
│ ├─cangjie // UI测试代码
│ │ └─src
│ └─resources // UI测试资源
├─greendao_core // 核心代码模块
│ └─src
│ └─main
│ ├─cangjie // 核心代码
│ │ └─src
│ └─resources
├─greendao_annotation // 注解生成器模块
│ └─src
│ └─main
│ ├─cangjie // 注解代码
│ │ └─src
│ └─generator // 生成器代码
│ └─src
└─hvigor // 构建工具目录
使用说明
编译运行
1、使用 DevEco Studio NEXT Developer Beta2(Build Version: 5.0.3.500) 构建工程项目, 生成 hap 包,端测请使用镜像 CangjieUIB100 版本的mate60手机
功能示例
用例代码在entry目录下 功能示例
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights resvered.
*/
package ohos_app_cangjie_entry
import ohos.base.*
import ohos.ability.*
import ohos.window.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import ohos.router.*
import ohos.prompt_action.PromptAction
import ohos.relational_store.*
import ohos.state_macro_manage.Entry
import ohos.state_macro_manage.Component
import ohos.state_macro_manage.State
import ohos.state_macro_manage.r
var userDao: UserDao = unsafe { zeroValue<UserDao>() }
var studentDao: StudentDao = unsafe { zeroValue<StudentDao>() }
var teacherDao: TeacherDao = unsafe { zeroValue<TeacherDao>() }
var personDao: PersonDao = unsafe { zeroValue<PersonDao>() }
@Entry
@Component
class MyView {
protected override func onAppear() {
let db = getRdbStore(getStageContext(getGlobalAbilityContext()), StoreConfig("RdbTest.db", SecurityLevel.S1))
var daoMaster: DaoMaster = DaoMaster(db)
DaoMaster.dropAllTables(daoMaster,true)
DaoMaster.createAllTables(daoMaster, true)
var daoSession: DaoSession = daoMaster.newSession()
userDao = daoSession.getUserDao()
studentDao = daoSession.getStudentDao()
teacherDao = daoSession.getTeacherDao()
personDao = daoSession.getPersonDao()
let arr = [
User(Option<Int64>.None, 1, "lisi", "111"),
User(Option<Int64>.None, 2, "zhangsan", "222"),
User(Option<Int64>.None, 3, "wangwu", "333"),
User(Option<Int64>.None, 4, "zhaoliu", "444"),
User(Option<Int64>.None, 5, "tianqi", "555")
]
for (item in arr) {
userDao.insertOrReplace(item)
}
let arr1 = [
Student("1", "lisi", "111"),
Student("2", "zhangsan", "222"),
Student("3", "wangwu", "333"),
Student("4", "zhaoliu", "444"),
Student("5", "tianqi", "555")
]
for (item in arr1) {
studentDao.insertOrReplace(item)
}
let arr2 = [
Teacher(Option<Int64>.None,"zhang san", "西安市雁塔区科技二路", 28,165,110,96.326),
Teacher(Option<Int64>.None,"li四si", "西安市雁塔区科技二路", 28,163,110,98.309),
Teacher(Option<Int64>.None,"王腾", "西安市雁塔区科技五路", 29,185,170,94.46)
]
for (item in arr2) {
teacherDao.insertOrReplace(item)
}
}
let scroller = Scroller()
func build() {
// Row {
Scroll(this.scroller){
Column {
Text("--Greendao 简单用例--").height(80)
Divider().color(0x000000).strokeWidth(1).margin(top: 10, bottom: 10)
Row() {
Button("查询").onClick {
evt => Router.push(url: "PageQuery")
}.fontSize(20).height(40)
Button("新增").onClick {
evt => Router.push(url: "PageAdd")
}.fontSize(20).height(40)
Button("事务修改").onClick {
evt => Router.push(url: "PageUpdateInTx")
}.fontSize(20).height(40)
Button("新增").onClick {
evt => Router.push(url: "PageObjectAdd")
}.fontSize(20).height(40)
}
Text("--Greendao HLT用例--").height(80)
Divider().color(0x000000).strokeWidth(1).margin(top: 10, bottom: 10)
Button("HLT用例 - L0")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL0")}
Button("HLT用例 - L1")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL1")}
Button("HLT用例 - L2")
.height(40)
.margin(top: 5, bottom: 5)
.fontSize(16)
.shape(ShapeType.Capsule)
.onClick {Router.push(url: "IndexL2")}
//HLT
// Button("DeleteTest01").onClick {Router.push(url: "DeleteTest01")}
// Button("AddTest01").onClick {Router.push(url: "AddTest01")}
// Button("AddTest02").onClick {Router.push(url: "AddTest02")}
// Button("QueryTest01").onClick {Router.push(url: "QueryTest01")}
// Button("QueryTest02").onClick {Router.push(url: "QueryTest02")}
// Button("QueryTest03").onClick {Router.push(url: "QueryTest03")}
// Button("UpdateTest01").onClick {Router.push(url: "UpdateTest01")}
}.width(100.percent).margin(top: 5)
}
// }
}
}
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)