【仓颉三方库】 数据库框架——dataORM4cj

39 篇文章 0 订阅
39 篇文章 0 订阅

介绍

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                      // 构建工具目录

接口说明

主要类和函数接口说明详见 API

使用说明

编译运行

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)
            }
        // }

    }
}

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:gitee.com/MNxiaona/733GH

在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值