一、简介
我们在平时开发业务代码时,必然涉及到大量的拷贝工作,比如新创建的表,要实现增删改查,如果没有代码生成器,那么是很痛苦的。
好在mybatis就提供了逆向工程提高我们的编码效率,在后面的mybatis-plus对其进行了封装,更加简化了代码生成额流程。
那么想不想要一条可以在页面ui操作的代码生成器呢?比如说从数据库结构的groovy文件,到java代码,甚至到前端vue的基础增删改查界面?
本文使用
mybatis-plus-generator
提供的能力,结合velocity
模板引擎,实现了上面我们提到的能力,相信对于你自己的管理系统开发过程, 能有很大的帮助。
二、开始干活
本文是依赖于mybatis-plus,请先确保你的项目已经完成了mybatis-plus的集成,没有的同学移步我前面的文章。
2.1 工程准备
为什么有这一小节?因为我的生成代码的工程在我的项目中是一个单独的模块,有独立的数据库连接,独立的依赖等。
这么做的好处是,此模块作为一个服务,与其他服务解耦,可以注册在注册中心,可以被网关的接口文档发现到,更可以为我们日后作为可ui操作代码生成器做准备。如果你非要和其他项目放在一起也没有任何问题。
如上所示是我的工程结构,此工程是作为一个moudle存在的。关于如何创建moudle,这里不介绍了吧,不知道的可以私聊,我可以手把手教你。或者看本文的源码,地址在开篇。
2.2 依赖准备
基于maven,springboot开发的项目,重要的就是依赖,我们先添加需要的依赖。
主要依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
复制代码
辅助开发的依赖,如果你不习惯使用可以自己修改成其他工具类:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.19</version>
</dependency>
复制代码
2.3 准备velocity模板
不知道同学们用没用过velocity模板引擎,从这个名字就能看出来,它是通过模板的形式,定义我们需要的内容,然后通过指定字符变量去替换关键字。
其实Freemarker也是比较出名的模板引擎,以前前后端未分离时经常见到,结合mybatis-plus-generator同样能够做到本文需要的效果。
我在resources下面创建了一个文件夹template,用来存放我们需要的模板:
从上到下分别是:
Api.js.vm
vue中api.js对应的模板Client.java.vm
springCloud服务调用的ClientController.java.vm
控制器Convert.java.vm
实体类转换器,例如DTO <-> DODTO.java.vm
DTO 接口和页面传递Entity.ja