CodeGenerator代码生成器

作者: 李程鹏 | 来源:发表于2017-04-11 15:09 被阅读3224次

CodeGenerator代码生成器

CodeGenerator是一个JavaEE代码生成器,它可以帮助我们生成一个可以直接运行的JavaWeb工程。

1 生成的文件

这个代码生成器生成的代码包括简单的增删改查代码、配置文件和SwaggerUI页面。具体生成的文件包括:

  • 代码文件:
    • 持久化对象PO类
    • 使用SpringMVC编写的Controller文件
    • Service层接口文件
    • 使用Spring编写的ServiceImpl实现类
    • Dao层接口文件
    • 使用Hibernate编写的DaoImpl实现类
  • 配置文件:
    • SpringMVC的配置文件
    • Spring的配置文件
    • Hibernate的配置文件
    • web.xml文件
    • pom.xml文件
  • 页面文件:SwaggerUI页面

2 实现原理

2.1 代码文件的生成

参照mybatis-generator-core-1.3.2.jar的实现原理,抽取出插件中对Java文件的封装和生成的核心代码,然后根据个人需求对它们进行精简和改写,使其能够生成控制层、业务层和持久层的Java代码。

2.2 配置文件的生成

使用FreeMarker模板引擎来生成配置文件。因为在配置文件中,需要动态改变的内容很少,所以我认为使用模板引擎技术来生成比较方便。

2.3 UI文件的生成

UI文件的生成过程就是一个文件夹拷贝操作。我将预先准备好的SwaggerUI文件放到生成器工程下,程序运行时就会将这些文件拷贝到新生成的工程下面。这样做的好处是不用自己去Swagger官网下载文件,然后手动将文件拷贝过去。

3 使用方式

3.1 下载源码

源码地址:https://github.com/GitHub-LiChengPeng/CodeGenerator

3.2 添加数据库信息

找到生成器源码的入口类(core.Main),修改主方法中指定的MySQL数据库的用户名、密码和数据库名。

3.3 生成代码

要生成正确的代码需要满足两个条件:一、数据库表必须有主键,而且主键必须满足单一、整型、自增三个特点。二、只能在Windows系统上运行程序,因为路径问题。

我们可以先在数据库中新建一张表(如用户表),SQL语句如下:

CREATE TABLE `user` (
`user_id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '用户主键' ,
`user_name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名' ,
`user_birthday`  date NULL DEFAULT NULL COMMENT '用户生日' ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
COMMENT='用户表'
AUTO_INCREMENT=5
ROW_FORMAT=COMPACT;

然后运行程序,程序会读取指定数据库下的所有表格,然后针对每个表格生成基本的增删改查代码。程序执行完毕后,我们可以在桌面上找到一个新生成的名字为Project的工程。

最后我们使用IntelliJ IDEA打开(Open)刚生成的工程,可以看到工程中的代码结构如下图所示:


01-工程结构图.png

3.4 修改工程设置

需要修改两个地方:第一个是让编译器找到web.xml,第二个是让编译器知道web目录所在的路径。具体操作如下:


02-修改工程设置.gif

3.5 添加Tomcat服务器

03-添加Tomcat服务器.gif

3.6 启动服务器

Tomcat服务器成功启动后,浏览器自动会打开SwaggerUI的页面。我们可以在页面中看到生成器为用户表生成的增删改查API。


04-SwaggerUI页面.png

3.7 测试增删改查方法

3.7.1 测试增加用户:

05-增加操作.gif

3.7.2 测试删除用户

06-删除操作.gif

3.7.3 测试修改用户:

07-修改操作.gif

3.7.4 测试按主键查用户:

08-按主键查.gif

3.7.5 测试查询所有用户:

09-查询所有.gif

4 使用场景

因为目前还没有对生成器源码进行重构,所以它的扩展性很差。我觉得这个生成器现在只能用在教学和娱乐场景。


10.jpg

相关文章

网友评论

  • Jonneykang:越是简单越是厉害
    666
  • 刹那丨永恒:我擦咧 厉害了我的哥~
  • 7a50f65350e4:大大,为什么我没有找到web文件夹?
    李程鹏:生成器直接运行main就可以了,不是web项目,是一个普通的java项目,写来玩的.
    李程鹏:如果生成的工程编译器找不到web路径,可以将web路径文件拷贝到src/main/下,改名为webapp,即改为默认的路径及文件夹名
  • f7aa6435d3e3:厉害了 我的哥
  • 麦克劳林:很不错呀,简单项目结合使用,挺好的。
  • 4e90ec4ce1a4:厉害了 我的哥

本文标题:CodeGenerator代码生成器

本文链接:https://www.haomeiwen.com/subject/nzwyattx.html