阿里的cola框架好用吗(alibabacola框架代码生成器)
阿里的cola框架好用吗(alibabacola框架代码生成器)3:标紫的文件为固定文件名,标蓝的文件可能需要合并一下目的使其所在文件夹下的文件减少(比如,要定义一个叫做Order的Aggregate,各叶子节点最终对应的文件为OrderDomainService.java OrderGateWay.java OrderCmd.java OrderQry.java OrderApiController.java)图中,1:domain---xxx领域名分组---model下的叶子节点为文件夹2:标绿的各叶子节点都表示具体的Java文件后缀名,此文件的其余部分根据Domain中具体的Aggregate名填充
alibaba cola 框架代码生成器下载地址
https://pan.baidu.com/s/1coHs6f_1LqGFgutr6K6_Wg 验证码 rvgr
代码结构
项目中准备用 cola框架(https://github.com/alibaba/COLA) 开发应用 [脚手架](https://start.aliyun.com/bootstrap.html),根据自己的理解,定义了如下的代码结构:
图中,
1:domain---xxx领域名分组---model下的叶子节点为文件夹
2:标绿的各叶子节点都表示具体的Java文件后缀名,此文件的其余部分根据Domain中具体的Aggregate名填充
(比如,要定义一个叫做Order的Aggregate,各叶子节点最终对应的文件为OrderDomainService.java OrderGateWay.java OrderCmd.java OrderQry.java OrderApiController.java)
3:标紫的文件为固定文件名,标蓝的文件可能需要合并一下目的使其所在文件夹下的文件减少
(比如,定义Order后又定义了一个叫User的Aggregate,可以把OrderApiController.java和UserApiController.java的内容合并,最终根据业务来)
4: 第一条model下包含的文件夹("aggregates" "entities" "valueobjects")中的Java文件名不做约束
5:非叶子节点,都为文件夹,名称固定
6:xxx领域名分组 也是文件夹,名称同具体的Aggregate
可见当我们定义一个Domain的Aggregate或者Entity时,要创建的相关类以及各个层级之间的关系调用还是挺多的,于是有了做一个代码生成器的想法。
代码生成器的约定:对于一个Entity我们只定义Id和name两个属性,重要的是生成正确的包定义(package)和相关的类引用(import)。
准备工作
用cola定义一个测试项目 可以在[阿里站点](https://start.aliyun.com/bootstrap.html)生成
也可以通过本地
也可以在本地用脚手架 我采用的cola是4.1.0版本
mvn archetype:generate -DgroupId=com.test -DartifactId=myApp -Dversion=1.0.0-SNAPSHOT -Dpackage=com.test.myApp -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=4.1.0
结构生成以后,除了start模块下,将其余各模块的myApp目录下的示例代码文件全部删除,比如app和client下的,其他目录一样
示例代码可以保留,但是代码生成器自动编译代码,会报错。不删除的话请手动调整。
为了演示,我这里在Infastructure模块中添加一个Oracle驱动,根据实际情况来
mybatis-config中也删除默认的配置
配置star模块下的application.properties
## 生成器
开发框架采用了Pyqt5 使用了qdarkstyle和qtawesome库,集成了notepad2进行代码的查看
进入tool文件下,修改install.bat 配置一下Java目录
打开生成器
选择项目根目录(不要进入子目录)
生成器会将现有的代码罗列出来,注意:标记1 2 3的路径合并起来,才是各个Java文件的具体地址。
删除myapp文件下的代码文件后,各列表会是空的,但模块的路径显示
添加一个foo Aggregate
可见创建了20多个文件并自动编译,编译成功后弹窗消失
修改mapper文件对应到真实的表
进入start目录 mvn spring-boot:run
测试列表接口
新建