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)刚生成的工程,可以看到工程中的代码结构如下图所示:
3.4 修改工程设置
需要修改两个地方:第一个是让编译器找到web.xml,第二个是让编译器知道web目录所在的路径。具体操作如下:
3.5 添加Tomcat服务器
3.6 启动服务器
Tomcat服务器成功启动后,浏览器自动会打开SwaggerUI的页面。我们可以在页面中看到生成器为用户表生成的增删改查API。
3.7 测试增删改查方法
3.7.1 测试增加用户:
3.7.2 测试删除用户
3.7.3 测试修改用户:
3.7.4 测试按主键查用户:
3.7.5 测试查询所有用户:
4 使用场景
因为目前还没有对生成器源码进行重构,所以它的扩展性很差。我觉得这个生成器现在只能用在教学和娱乐场景。