普元EOS学习笔记-低开实现图书的增删改查
前言
在前一篇《普元EOS学习笔记-创建精简应用》中,我已经创建了EOS精简应用。
我之前说过,EOS精简应用就是自己创建的EOS精简版,该项目中,开发者可以进行低代码开发,也可以进行高代码开发。
本文我就记录一下自己在EOS精简应用下进行低开的过程,实现图书信息的简单的增删改查的功能。
另外,普元EOS最新版8.3.1发布了,从本文开始,将采用EOS8.3.1作为开发工具。
需求
需求比较简单,这也不是真实的项目,是对图书分类和图书信息进行增删改查。
图书分类的关键字段:id (主键) 、typeName(分类名称)
图书的关键字段: id(主键)、 typeId(分类ID)、 bookTitle(图书标题)、bookAuth(作者)
功能1 : 对图书分类进行增删改、列表
功能2: 对图书进行增删改、列表
功能3:图书列表支持对图书名称、分类筛选的查询。
功能4: 删除图书分类的时候,如果图书分类下有图书,要提示无法删除。
就这么简单的功能吧。
这里埋一个坑,这个图书系列的我后面会写几篇文章,这是第一篇,我最终是希望用EOS写一个简单的公司图书阅览室的借阅管理的软件。
数据结构设计
图书分类(bk_type)
drop table if exists bk_type;CREATE TABLE `bk_type` (`id` varchar(32) NOT NULL,`type_name` varchar(32) NOT NULL COMMENT '图书分类名称',`create_time` datetime NOT NULL COMMENT '新增时间',`create_user` varchar(64) NOT NULL COMMENT '新增用户',`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',`update_user` varchar(64) DEFAULT NULL COMMENT '最后更新人',`sort_no` int(11) NOT NULL DEFAULT '0' COMMENT '排序号',`version` int(11) NOT NULL DEFAULT '1' COMMENT '乐观锁',PRIMARY KEY (`id`),UNIQUE KEY `unq_type_name` (`type_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
图书信息(t_book_info):
drop table if exists bk_book_info ;CREATE TABLE `bk_book_info` (`id` varchar(32) NOT NULL,`book_name` varchar(128) NOT NULL COMMENT '图书名称',`book_auth` varchar(128) DEFAULT NULL COMMENT '图书作者',`book_type_id` varchar(32) DEFAULT NULL COMMENT '图书类型id',`create_time` datetime NOT NULL COMMENT '新增时间',`create_user` varchar(64) NOT NULL COMMENT '新增用户',`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',`update_user` varchar(64) DEFAULT NULL COMMENT '最后更新人',`sort_no` int(11) NOT NULL DEFAULT '0' COMMENT '顺序编号',`version` int(11) NOT NULL DEFAULT '1' COMMENT '乐观锁',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
表信息就不解释了,看注释都能看明白。
创建和启动精简应用
这个功能不再赘述了,见前一篇《普元EOS学习笔记-创建精简应用》
本文创建的精简应用的名称是 express10 ,项目端口是 28010 。
因此,项目启动后,可以在浏览器输入地址 http://127.0.0.1:28010/ 访问。
接下来登录,账号密码是 admin 和 000000 ,默认密码是 000000,第一次登录会提示修改密码。
首先打开的是 工作台窗口,点击工作台,选择开发中心,进入到开发中心。
什么是工作台?
工作台其实不用解释,就是主操作页面,列出了工作日历、待办等若干窗口。
什么是开发中心?
EOS的开发中心是进入EOS的低开界面,是一个基于web界面的ide。
在开发中心可以通过拖拉拽的方式进行表单设计、实现增删改查、服务编排、流程设计等。
服务编排是比较牛的功能。我们知道,软件开发就是写代码执行循环判断,然后调用各种类库的方法。这些功能,在EOS中可以通过服务编排来实现,类似拖拉拽生成一个流程,将程序执行的循环、判断、调用类库这些集成在一个流程中实现。
流程设计实现了工作流,EOS的子产品BPS实现了工作流引擎,在开发中心的ide中可以进行工作流程图的编排。
在开发中心的主页面,如下所示,点击开发按钮,进入低开ide。
下图是普元EOS低开ide界面。
开始图书分类的增删改查
接下来,就在EOS低开ide下进行图书分类的增删改查。
1 创建构建包
在左侧上方点击“新建构建包”按钮,将打开新建构建包的功能。
1.1 什么是构建包呢?
EOS的构建包可以理解为maven项目中的子模块,比如我们创建的express10项目,下面有4个构建包分别是 api boot core 和 model (大家知道,我省略了 com.primeton.eos.express10 这个统一前缀)
所以,可以看出来,构建包应该是maven的子模块。
至于EOS的低开ide中创建的构建包如何与 express10进行对应,这里不做详细讲解,以后用到了在实践中理解。
构建包创建后,左侧可以看到构建包的菜单
与express10下的model构建包比较一下
低开ide中的实体包下存放数据表的数据实体,在model模块中是数据包下存放的也是数据实体。
低开ide中的页面包存放的是拖拉拽生成的页面,这个高开ide的项目中是没有的,高开要创建页面,是需要额外的工具开发页面的。
低开ide中的流程包与高开ide项目下的流程包是一样的,都是存放流程图的。
低开ide中的服务包对应的是高开ide项目下的EOS服务+构件,是通过流程图拖拉拽实现服务编排的功能。
大概了解一下构建包的概念就行了,我们进入下一步。
2 查看图书分类的数据源
在页面的右侧可以看到有一个数据源标签,点击可以看到default数据源下的数据表。
default数据源:在项目boot下的user-config.xml中配置的default数据源。
注意:EOS是支持多数据源的,如果配置了多数据源,在这里会看到多个数据源。
可以看到数据源右侧有个闭着的眼睛,点开就可以看到数据源的所有数据表,闭眼后,只显示自己创建的数据表,eos自有的数据表是不显示的。
3 创建实体集
在实体菜单右键,然后点击“新建实体集”,打开创建实体集的窗口。实体集就当做是数据实体的集合。
实体集窗口下,可以将数据表拖拽进来。
4 从图书分类实体生成页面
在新拖拽生成的图书分类实体上右键,点击生成页面。
接下来,就可以看到新增页面,和图书分类的列表页面。
在之后的可测试新增、编辑、删除等操作。
遗留问题
1 主键生成方式,是顺序值,我个人习惯用uuid做主键,如何用uuid来生成主键呢?
2 这里有个乐观锁的字段 version,是什么意思?怎么用?
3 create_time create_user update_time update_user 这些字段会自动赋值,如何做到的?
这些问题以后我再说明吧。
这篇文章就到这里吧。
相关文章:

普元EOS学习笔记-低开实现图书的增删改查
前言 在前一篇《普元EOS学习笔记-创建精简应用》中,我已经创建了EOS精简应用。 我之前说过,EOS精简应用就是自己创建的EOS精简版,该项目中,开发者可以进行低代码开发,也可以进行高代码开发。 本文我就记录一下自己在…...

动态住宅代理IP详细解析
在大数据时代的背景下,代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性,而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…...

等保2.0 实施方案之信息软件验证要求
一、等保2.0背景及意义 随着信息技术的快速发展和网络安全威胁的不断演变,网络安全已成为国家安全、社会稳定和经济发展的重要保障。等保2.0(即《信息安全技术 网络安全等级保护基本要求》2.0版本)作为网络安全等级保护制度的最新标准&#x…...

【LeetCode的使用方法】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🔮LeetCode的使用方法 🔮LeetCode 是一个在线编程平台,广泛…...

【SGX系列教程】(二)第一个 SGX 程序: HelloWorld,linux下运行
文章目录 0. SGX基础原理分析一.准备工作1.1 前提条件1.2 SGX IDE1.3 基本原理 二.程序设计2.1 目录结构2.2 源码设计2.2.1 Encalve/Enclave.edl:Enclave Description Language2.2.2 Enclave/Enclave.lds: Enclave linker script2.2.3 Enclave/Enclave.config.xml: Enclave 配置…...

网页报错dns_probe_possible 怎么办?——错误代码有效修复
当你在浏览网页时遇到dns_probe_possible 错误,这通常意味着你的浏览器无法解析域名系统(DNS)地址。这个问题可能是由多种原因引起的,包括网络配置问题、DNS服务问题、或是本地设备的问题。教大家几种修复网页报错dns_probe_possi…...
Vue.js 中属性绑定的详细解析:冒号 `:` 和非冒号的区别
Vue.js 中属性绑定的详细解析:冒号 : 和非冒号的区别 在 Vue.js 中,属性绑定是一个重要的概念,它决定了如何将数据绑定到 DOM 元素的属性上。Vue.js 提供了两种方式来绑定属性:使用冒号 : 进行动态绑定,或直接书写属性…...
使用Java实现智能物流管理系统
使用Java实现智能物流管理系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用Java语言实现智能物流管理系统,这是一个涉及到…...

深圳技术大学oj C : 生成r子集
Description 输出给定序列按字典序的 � 组合,按照所有 � 个元素出现与否的 01 标记串 ����−1,...,�1 的字典序输出. 此处01串的字典序指:先输入的数字对应低位&#x…...

不同操作系统下的换行符
1. 关键字2. 换行符的比较3. ASCII码4. 修改换行符 4.1. VSCode 5. 参考文档 1. 关键字 CR LF CRLF 换行符 2. 换行符的比较 英文全称英文缩写中文含义转义字符ASCII码值操作系统Carriage ReturnCR回车\r13MacIntosh(早期的Mac)LinefeedLF换行/新行\…...

Transformation(转换)开发-switch/case组件
一、switch/case组件-条件判断 体育老师要做一件非常重要的事情:判断学生是男孩还是女孩、或者是蜘蛛,然后让他们各自到指定的队伍中 体育老师做的事情,我们同样也会在Kettle中会经常用来。在Kettle中,switch/case组件可以来做类似…...
Android Gradle 开发与应用 (二): Android 项目结构与构建配置
目录 1. Android 项目的 Gradle 文件结构 1.1 项目根目录 1.2 模块目录 2. Gradle 构建配置详解 2.1 配置 Android 项目的 build.gradle 2.2 配置模块的 build.gradle 2.3 使用 productFlavors 管理多版本应用 2.4 使用 buildConfigField 注入构建常量 在 Android 开发…...

02:vim的使用和权限管控
vim的使用 1、vim基础使用1.1、vim pathname 2、vim高级用法2.1、查找2.2、设置显示行号2.3、快速切换行2.4、 行删除2.5、行复制粘贴 3、权限管理3.1、普通用户和特权用户3.2、文件权限表示 vim是Linux中的一种编辑器,类似于window中的记事本,可以对创建…...

GNeRF代码复现
https://github.com/quan-meng/gnerf 之前一直去复现这个代码总是文件不存在,我就懒得搞了(实际上是没能力哈哈哈) 最近突然想到这篇论文重新试试复现 一、按步骤创建虚拟环境安装各种依赖等 二、安装好之后下载数据,可以用Blen…...

EXCEL返回未使用数组元素(未使用值)
功能简介: 在我们工作中,需要在EXCEL表列出哪些元素(物品或订单)已经被使用了(或使用了多少次),哪些没有被使用。 当数量过于庞大时人工筛选或许不是好办法,我们可以借助公式&…...
系统调用简单介绍
概述 简单理解就是操作系统给我们提供的函数接口,当我们的程序需要执行一些只有操作系统才能完成的工作的时候,我们就要调用操作系统给我们提供的接口来实现这些功能,这些接口就是系统调用。 那什么样的操作是只有操作系统才能完成呢? 比如…...

Mac可以读取NTFS吗 Mac NTFS软件哪个好 mac ntfs读写工具免费
在跨操作系统环境下使用外部存储设备时,特别是当Windows系统的U盘被连接到Mac电脑时,常常会遇到文件系统兼容性的问题。由于Mac OS原生并不完全支持对NTFS格式磁盘的读写操作,导致用户无法直接在Mac上向NTFS格式的U盘或硬盘写入数据。下面我们…...
AI是否能够做决定
AI是在帮助开发者还是取代他们? 我认为AI功能虽然很强大,但是代替不了人,原因就在于人可以做决定,可以承担责任和后果,但是AI不能够为结果负责...

【Excel操作】Python Pandas判断Excel单元格中数值是否为空
判断Excel单元格中数值是为空,主要有下面两种方法: 1. pandas.isnull 2. pandas.isna判断Excel不为空,也有下面两种方法: 1. pandas.notna 2. pandas.notnull假设有这样一张Excel的表格 我们来识别出为空的单元格 import panda…...
C# Opacity 不透明度
WinForms Opacity以下是一些使用 Opacity 属性的示例:设置窗体的透明度:设置按钮的透明度:动态改变控件的透明度:使用定时器改变透明度:在窗体加载时设置透明度: 请注意另外 WPF Opacity以下是一些使用 Opa…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
java+webstock
maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...

作为点的对象CenterNet论文阅读
摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...