1 前言
在《普元EOS学习笔记-低开实现图书的增删改查》的文章中,我描述了在精简应用中,基于低开实现图书分类的增删改查的操作,是为了简单展示EOS低开的能力。
低开天生会有一些问题,这个咱就不啰嗦了。而且,那篇文章我也留了一些问题,比如id如何以uuid方式生成,还有version字段是干什么的,这些问题用低开都没法解决。
这篇文章,我将描述在精简应用中,基于高开实现图书分类的增删改查。
2 数据表结构
数据表结构依旧采用 《普元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
3 创建精简应用
这个功能不再赘述了,见前一篇《普元EOS学习笔记-创建精简应用》
本文创建的精简应用的名称是 express10 ,项目端口是 28010 。
因此,项目启动后,可以在浏览器输入地址 http://127.0.0.1:28010/ 访问。
4 创建数据集
Java操作数据库,基于ORM的思想,需要创建数据实体。
EOS低开采用创建实体集的方式,来实现ORM。
EOS高开中,可以创建数据集(dataset)来实现ORM。
高开创建数据集,首先要创建数据库连接,然后直接从数据表反向生成数据集(dataset) 。
4.1 在EOS 的ide中创建数据库连接
打开EOS ide,找到Data source Explorer 视图。
如果找不到这个视图,可以在菜单 -- 窗口 -- 显示视图 -- Data source explorer 打开该视图。
在Data Source Explorer 视图,选择 Database connections 右键,点击 New ,创建数据库连接。
呼唤出 New Connection Profile窗口,选择对应的数据库驱动。本案例采用的数据库是 MySQL5.7 ,所以应该选择MySQL5.7的驱动,但选择MySQL后发现没有 5.7这个版本,那么就选择MySQL驱动的最高版本,然后手动制定MySQL-connection的java驱动jar文件。本案例就是手动制定的mysql-connection.jar文件的。
- 选择数据库类型,并填写数据库连接名称
- 选择mysql的驱动
选择了数据库类型后,点击下一步,进入到选择mysql驱动,并填写数据库连接信息的窗口。
数据库驱动 Drivers的下拉菜单中默认是空的,点击右侧的图表,打开选择驱动菜单的窗口。
看到最高版本是5.6,因为本案例采用的mysql版本是 5.7,那么这里就选择5.6这个版本吧。
但是选择后,发现出现红色异常图标,因为EOS默认是没有这个版本的mysql的驱动的,需要手动选择mysql的驱动文件。mysql的驱动文件直接在电脑上选择合适的jar文件即可,我选择的是 mysql-connector-j-8.0.33.jar 。
选中 Mysql5.6Driver后,选择上方第一个 tab(JAR List )。然后点击 Add JAR/Zip按钮,选择 mysql-connector-j-8.0.33.jar 文件即可。
建立了数据连接后,连接后,会看到数据库下的所有数据表。
bfp_xxxx eos_xxx lc_xxx 这些数据表,不用管,这些是EOS自带的一些数据表,业务数据库需要增加这几个表。
关键是 bk_type 和 bk_book_info 这两个数据表,这是图书分类和图书信息数据表。
针对这两个表,我们要在ide中创建数据实体,然后在低开平台针对数据实体创建页面。
4.2 基于数据表创建数据实体
在model构件下,选择 com.primeton.eos.express10.model 包,右键 - 创建 - 数据集。
填写实体名称等信息。
BookDataset穿件成功后,双击打开数据集操作页面。
然后,拖拽Data Source Explorer 中数据包 bk_type 到数据操作窗口,生成了BkType的数据实体。
生成数据实体后,双击,可以进行若干操作。这里有几个点我需要说明一下
1 主键生成策略: EOS默认采用的主键是顺序生成,这个我是不喜欢的,修改策略位 自动生成uuid 。
2 乐观锁: 必须是有version字段,这个字段就会成为乐观锁。关于乐观锁的概念,请自行百度,个人认为还是很有用的。
3 创建人、创建时间、最后更新人、最后更新时间:这是4个字段,命名固定位 create_user create_time update_user update_time ,这4个字段命名是不能变的,EOS会自动维护这4个字段。
5 在低开中基于数据实体创建页面
启动项目,然后afcenter中进入低开ide中。
直接创建页面,在创建页面的时候选择数据实体,就可以从高开的数据实体生成页面了。
6 结尾
至此,基于高开生成数据实体,基于低开创建页面,高低开结合进行开发的方式就实现了。