使用代码生成器生成代码
代码生成器工程为so-fast-mpg
,该工程有两种启动方式,1.启动SoFastGeneratorUiServerApplication文件;2.启动TestSoFastGeneratorApplication文件。两种方式均可。推荐使用方式2,基于test方式进行启动。
API开发时首先使用代码生成器生成目录结构以及class主体。
创建数据库表
代码生成器位置:
代码生成器配置:
public static void main(String[] args) {
GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:mysql://x.x.x.x:3306/hello?serverTimezone=GMT%2B8")
.userName("db-username") // TODO 修改为自己数据库用户名
.password("db-password") // TODO 修改为自己数据库密码
.driverClassName("com.mysql.cj.jdbc.Driver")
.basePackage("com.sofast.cloud.biz.hello") // TODO 设置要生成的业务包路径
.nameConverter(new NameConverter() {
public String entityNameConvert(String tableName) {
if (Strings.isNullOrEmpty(tableName)) {
return "";
} else {
// tableName = tableName.substring(tableName.indexOf("_") + 1, tableName.length());
return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));
}
}
}) // TODO 默认不移除表头,如果想移除,请注释此配置
.port(9102) // TODO 设置服务端口号
.build();
MybatisPlusToolsApplication.run(config);
}
注意:代码生成器默认不会移除表头,如sys_hello我们需要得到hello则需要注释:
.nameConverter(new NameConverter() {
public String entityNameConvert(String tableName) {
if (Strings.isNullOrEmpty(tableName)) {
return "";
} else {
// tableName = tableName.substring(tableName.indexOf("_") + 1, tableName.length());
return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));
}
}
})
运行:
右键执行main函数即可。服务启动之后,在浏览器打开地址http://localhost:9102/
输出配置:
代码生成器提供对Entity、Mapper、Service、Controller的全部生成。so-fast框架提供了模板,可通过上传模板进行自定义代码格式生成。
文件模板位置:
doc └── code_tpls ├── controller.java.btl ├── entity.java.btl ├── mapper.java.btl ├── service.java.btl └── serviceimpl.java.btl
这里需要注意「输出路径」,一定要写正确,这里的输出路径是开发工程中的package路径,根据自己业务期望位置进行填写,比如我希望生成到biz目录下,并新建一个hello业务模块,在hello业务模块中创建自己的Controller、Service、Mapper、Entity,我期望的目录结构如下:
biz
├── hello
│ ├── controller
│ ├── entity
│ ├── mapper
│ └── service
│ └── impl
另外,针对entity和controller需要在页面进行一些设置,便于生成更符合要求的代码。
点击Entity行的「操作」按钮,打开「策略配置」选项,将启用lombok、生成注解、生成swagger2注解选项打开并保存。
点击Controller行的「操作」按钮,打开「策略配置」选项,在「Controller的超类名称」栏中填入Controller的父类「com.sofast.core.framework.web.controller.BaseController」,SOFAST要求所有的Controller类必须继承该父类。另外将「启用REST接口注解」选项打开并保存。
代码生成:
重新回到Table列表页面,选中需要操作的表,并点击「代码生成」按钮
在打开的页面中,输入以下内容,点击「开始生成」进行定制化代码生成。代码会自动生成到工程对应的包下。
配置目标项目根目录只需要把根目录之后的路径改为要自己项目的路径(不用写src/min/java...这些代码生成器会生成 。这里我的目标项目根目录为\D:\Users\NCIT\IdeaProjects\so-fast-pl-cloud\so-fast-biz\biz-modules\biz-hello\)
注意:
配置目标项目根目录只需要把根目录之后的路径改为要自己项目的路径(不用写src/min/java...这些代码生成器会生成 。这里我的目标项目根目录为\D:\Users\NCIT\IdeaProjects\so-fast-pl-cloud\so-fast-biz\biz-modules\biz-hello\)因为在「输出路径」已经填写好了完整的路径
这里的「功能模块名」请不要填写任何东西!!!
如果需要进行重复生成时,可以开启文件覆盖选项,将之前的旧文件覆盖,但使用时要注意,别覆盖了已经编写好的代码!!!
点击「开始生成」后,我们来看下代码生成结果:
如我们预期一样,我们得到了正确的代码结构和代码文件。
常见问题:
代码生成器页面一段时间后,Table列表显示不出来,控制台有Exception抛出,这个是因为数据库连接池问题,过一会刷新页面就正常了。