傻瓜式一键生成主子表

news2024/11/18 2:58:28

文章目录

  • 傻瓜式一键生成主子表
    • 简介
    • 创建主子表
      • 示例
    • 根据已有主表创建子表
      • 示例
    • 创建空属性主子表
      • 示例
    • 总结

傻瓜式一键生成主子表

直接将xml导入到Studio里即可。下载文件连接:

  • CSDN链接
  • 阿里云盘

简介

  • 很多同学在创建主子表时,都会可能遇到如下一些问题
    • 例如编译不过去,
    • 创建得子表ID每次不重新自增。
    • 编译关系时逻辑搞不清,编译不通过。
    • 主子表数据Global,索引Global使用混乱。

下面介绍如何一键生成标准的主子表。再也不用为创建主子表而烦恼。

创建主子表

ClassMethod CreateMainSub(mainClassName As %String, mainColumns As %List = "", subClassName As %String, subColumns As %List = "") As %Status

其中:

  • mainClassName - 主表类名称。
  • mainColumns- 主表列名类型为%List
    • 参数示例:$lb($lb("propName", "propType"), $lb("propName", "%propType"))
    • 其中propName - 为属性名称,propType - 为属性类型
  • subClassName- 子表类名称
  • subColumns- 主表列名类型为%List
    • 参数示例:$lb($lb("propName", "propType"), $lb("propName", "%propType"))
    • 其中propName - 为属性名称,propType - 为属性类型

示例

  1. 首先确定数据库中是否有需要创建的主子表类。这里创建User.MainUser.Sub主子表。

在这里插入图片描述

  1. 运行CreateMainSub方法。
    • 创建主表User.Main主表增加列name类型为%String,列age类型为%Integer
    • 创建主表User.Sub主表增加列desc类型为%String,列date类型为%Date
USER>w ##class(Util.GenerateClassUtils).CreateMainSub("User.Main", $lb($lb("name", "%String"), $lb("age", "%Integer")), "User.Sub", $lb($lb("desc", "%String"), $lb("date", "%Date")))2023-07-09 13:04:50上启动了编译
,正在编辑2类
编译类 User.Main
编译类 User.Sub
正在编译表 SQLUser.Main
正在编译表 SQLUser.Sub
正在编译routine User.Main.1
正在编译routine User.Sub.1
0.174s中已成功完成编译.2023-07-09 13:04:50上启动了编译
编译类 User.Sub
正在编译表 SQLUser.Sub
正在编译routine User.Sub.1
0.118s中已成功完成编译.2023-07-09 13:04:50上启动了编译
,正在编辑2类
编译类 User.Main
编译类 User.Sub
正在编译表 SQLUser.Main
正在编译表 SQLUser.Sub
正在编译routine User.Main.1
正在编译routine User.Sub.1
0.217s中已成功完成编译.
1
  1. 创建后可以查看Studio,主子表已经创建完成。

    查看主表User.Main如下图:

    • 标识1处:主表User.Main自动添加Relationship关系属性Relationship sub As User.Sub [ Cardinality = children, Inverse = main ];
    • 标识2处:Global名称为^User.MainD^User.MainI^User.MainS

在这里插入图片描述

查看子表User.Sub如下图:

  • 标识1处:子表User.Sub自动添加Relationship关系属性Relationship main As User.Main [ Cardinality = parent, Inverse = sub ];
  • 标识2处:DataLocationIdLocation与主表Global保持一致,且增加I节点,这样做的目的是每次子表每次插入的数据ID是重新自增的。
  • 标识34处:与主表索引GlobalGlobal保持一致。

在这里插入图片描述

  1. 插入主子数据验证表创建是否正确。
ClassMethod SaveMainSub()
{
	ts
	
	s main = ##class(User.Main).%New()
	s main.name = "yx"
	s main.age = "18"
	s sc = main.%Save()
	q:($$$ISERR(sc)) $system.Status.GetErrorText(sc)
	s id = main.%Id()
	
	s sub = ##class(User.Sub).%New()
	s sub.desc = "苹果"
	s sub.date = +$h
	d sub.mainSetObjectId(id)
	s sc = sub.%Save()
	q:($$$ISERR(sc)) $system.Status.GetErrorText(sc)
	s sc = main.sub.Insert(sub)
	q:($$$ISERR(sc)) $system.Status.GetErrorText(sc)
	
	s sub = ##class(User.Sub).%New()
	s sub.desc = "华为"
	s sub.date = +$h
	s sub.main = main
	s sc = sub.%Save()
	q:($$$ISERR(sc)) $system.Status.GetErrorText(sc)
	s sc = main.sub.Insert(sub)
	q:($$$ISERR(sc)) $system.Status.GetErrorText(sc)
	
	tc

	q sc
}
USER> w ##class(Util.GenerateClassUtils).SaveMainSub()
1
USER> w ##class(Util.GenerateClassUtils).SaveMainSub()
1

在这里插入图片描述

在这里插入图片描述

  1. gif动图示例

在这里插入图片描述

根据已有主表创建子表

ClassMethod CreateSub(mainClassName As %String, subClassName As %String, subColumns As %List = "") As %Status

其中:

  • mainClassName - 主表类名称。
  • subClassName - 子表类名称。
  • subColumns- 子表列名类型为%List
    • 参数示例:$lb($lb("propName", "propType"), $lb("propName", "%propType"))
    • 其中propName - 为属性名称,propType - 为属性类型

示例

  1. 为已经存在的User.Book表创建子表。

在这里插入图片描述

  1. 运行CreateSub方法。
USER>w ##class(Util.GenerateClassUtils).CreateSub("User.Book", "User.Sub", $lb($lb("desc", "%String"), $lb("date", "%Date")))2023-07-09 13:22:12上启动了编译
,正在编辑2类
编译类 User.Book
编译类 User.Sub
正在编译表 SQLUser.Book
正在编译表 SQLUser.Sub
正在编译routine User.Book.1
正在编译routine User.Sub.1
0.195s中已成功完成编译.2023-07-09 13:22:12上启动了编译
编译类 User.Sub
正在编译表 SQLUser.Sub
正在编译routine User.Sub.1
0.098s中已成功完成编译.2023-07-09 13:22:12上启动了编译
,正在编辑2类
编译类 User.Book
编译类 User.Sub
正在编译表 SQLUser.Book
正在编译表 SQLUser.Sub
正在编译routine User.Book.1
正在编译routine User.Sub.1
0.180s中已成功完成编译.
1
  1. 会为已经存在的主表自动添加关系属性与子表。

在这里插入图片描述

  1. gif示例

在这里插入图片描述

创建空属性主子表

ClassMethod CreateMainSubNoneProp(mainClassName As %String, subClassName As %String) As %Status

其中:

  • mainClassName - 主表类名称。
  • subClassName - 子表类名称。

示例

  1. 快捷创建主子表,不设置属性,创建主子表后,由开发人员自由定夺添加属性。

在这里插入图片描述

总结

  • 通过使用傻瓜方式创建主子表,可以方便开发避免之前在开头所描述的一些问题:
    • 例如编译不过去,
    • 创建得子表ID每次不重新自增。
    • 编译关系时逻辑搞不清,编译不通过。
    • 主子表数据Global,索引Global使用混乱。

以上是个人对数据生成实体类的一些理解,由于个人能力有限,欢迎大家提出意见,共同交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

日本留学托福要求多少分才及格呢?

日本有悠久的历史和文化,吸引了越来越多的留学生前往探索和学习。那么,日本留学托福要求多少分才及格呢? 日本留学托福成绩要求 综合类:通常要求申请者取得托福总分在80以上,各项分数要求分别为口语20以上&#xff0c…

LinuxI2C应用编程——I2C-Tools的使用

文章目录 I2C 硬件框架I2C 软件框架I2C协议(传输数据的格式)写操作读操作I2C 信号 SMBus 协议概述硬件和软件上的区别SMBus 协议分析符号的含义SMBus Quick CommandSMBus Receive ByteSMBus Send ByteSMBus Read ByteSMBus Read WordSMBus Write ByteSMB…

11_Linux阻塞与非阻塞

目录 阻塞和非阻塞IO简介 等待队列 等待队列头 等待队列项 轮询 Linux驱动下的poll操作函数 阻塞式访问IO实验 阻塞式访问IO驱动程序编写 运行测试 非阻塞式IO实验 运行测试 阻塞和非阻塞IO简介 阻塞和非阻塞IO是Linux驱动开发里面很常见的两种设备访问模式,在编写…

充分利用测试自动化的 10 个最佳实践

目录 前言: 实践1:手动和自动测试结合 实践2:特别注意回归测试 实践3:包括端到端测试 实践4:为自动化测试提供集体所有权 实践5:详细计划与测试相关的所有流程 实践6:选择适合您需求的自…

Python随机生成2堆三维点云点,有固定的重复率并可视化

Python随机生成2堆三维点云点,有固定的重复率并可视化 1. 效果图2. 源码 这篇博客源于博友的提问,刚好电脑在旁边没啥事,那就开整吧。 np.random 生成随机点(提供了俩种方法,1. xyz限制都是0~MAX值,2. xyz分…

IDEA中使用.env文件配置信息

一、说明 我们以配置阿里云的 Access Key 的信息为例(配置别的信息当然也可以,我只是举个例子!!!),假设我们的代码中需要用到它。Access Key有两个属性,分别为【ALIBABA_CLOUD_ACCE…

【剧前爆米花--前端三剑客】html的一些常用标签及其实例

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于html前端的文章,在这篇文章中我会简单介绍一些常用的html标签,并给出他们的应用实例,希望对你有所帮助! 目录 html常见标签 标题标…

python_day3_tuple

元组tuple :无法修改(只读的列表) t1 () t2 tuple() t3 (1, java, True, ()) print(f"t1的数据类型是:{type(t1)}") print(f"t2的数据类型是:{type(t2)}") print(f"t3的数据类型是&#…

ChatLaw:北大团队智能法律助手,国产大模型成功应用普惠法律服务

“ 技术发展的本质是普惠,用技术降低普通人获取法律知识的成本,向社会输出普惠的公平正义。—— 北京大学 ChatLaw 项目组” 刚刚清华团队升级了国产大模型:ChatGLM2-6B,ChatGLM2-6B 初体验。 转眼这两天北大团队推出的智能法律助…

DAY36:贪心算法(三)最大子数组和+买卖股票最佳时机

文章目录 53.最大子数组和枚举思路暴力解法贪心思路完整版时间复杂度 122.买卖股票的最佳时机Ⅱ(解法比较巧妙)思路完整版总结 53.最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元…

Java开发基础系列(一):Java设计概述

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: Java开发基础系列(一):Java设计概述 ⏱️ 创作时间: 2023年…

【漏洞复现】nginxWebUI 存在前台远程命令执行漏洞

文章目录 前言声明一、nginxWebUI 简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 nginxWebUI 存在前台远程命令执行漏洞,攻击者通过该漏洞获取服务器控制权限进而进一步获取敏感数据信息。 声明 请勿利用文章内的相关技术从事非法测试,由…

# 文盘Rust -- FFI 浅尝

作者: jiashiwen 原文来源: https://tidb.net/blog/cfa03c39 notice"Rust is a trademark of the Mozilla Foundation in the US and other countries." rust FFI 是rust与其他语言互调的桥梁,通过FFI rust 可以有效继承 C 语言…

道德与社会问题简报 #4: 文生图模型中的偏见

简而言之: 我们需要更好的方法来评估文生图模型中的偏见 介绍 文本到图像 (TTI) 生成 现在非常流行,成千上万的 TTI 模型被上传到 Hugging Face Hub。每种模态都可能受到不同来源的偏见影响,这就引出了一个问题: 我们如何发现这些模型中的偏见&#xff1…

Android启动流程优化 上篇

Android启动流程优化 上篇 本文链接:Android启动流程优化 上篇_猎羽的博客-CSDN博客 启动流程 各个阶段图 1、各个阶段的概括总结 分为5个大阶段或者10个小阶段 【字节跳动团队】内部论坛分享也是这么处理的 补充一些只是细节点: application#onCreate()运行…

基于多案例系统学习防洪评价报告编制方法与水流数学模型建模(HECRAS、MIKE、EFDC、Delft3D、FVCOM、SWAT、SWMM等模型应用)

目录 ​专题一 《防洪评价报告编制导则解读河道管理范围内建设项目编制导则》(SL/T808- 2021)解读编制导则解读 专题二 防洪评价相关制度与解析 ★专题三 案例演练解析 专题四 防洪评价地形获取及常用计算实践 专题五 HEC-RAS软件原理及应用案例解析…

leetcode160.相交链表

https://leetcode.cn/problems/intersection-of-two-linked-lists/solution/ 相交链表是指两个单向链表在某个节点处相交,之后形成了共同的后续部分。通常,两个链表的长度不相等。在相交节点之前,两个链表的节点数可能不同,但在相…

Java后端编译与优化

如果我们将字节码看作是程序语言的一种中间表示形式,那编译器无论在何时、在何种状态下把Class文件转换成与本地基础设施相关的二进制机器码,它都可以视为整个编译过程的后端。 1 即时编译器 即时编译器是指运行时将热点代码编译成本地机器码&#xff…

程序员必须掌握哪些算法?——前端开发工程师需要掌握的算法

文章目录 📋前言🎯什么是算法?🎯前端开发工程师需要掌握的算法🧩排序算法(如快速排序、归并排序)🧩搜索算法(如二分搜索)🧩图算法(如广…

【Unity造轮子】2D横版平台跳跃游戏实现多段跳完美手感(含源码)

文章目录 前言先看效果,手感很丝滑原理开始1. 看到检测点的检测范围2. 二段跳实现3. 动画控制器配置 源码扩展完结 前言 随着游戏技术的不断发展,2D横版平台跳跃游戏成为许多玩家的最爱。这类游戏以其简单而有趣的玩法和精致的视觉效果吸引着无数游戏爱…