代码生成器

API开发时首先使用代码生成器生成目录结构以及class主体。

代码生成器位置:
└── test
    └── java
        └── com
            └── sofast
                ├── MybatisPlusUIServer.java   // 代码生成器
代码生成器配置:
public static void main(String[] args) {
    GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:mysql://x.x.x.x:3306/so-fast")
            .userName("db-username") // TODO 修改为自己数据库用户名
            .password("db-password") // TODO 修改为自己数据库密码
            .driverClassName("com.mysql.cj.jdbc.Driver")
            .basePackage("com.sofast.biz") // TODO 设置要生成的业务包路径
            .port(8068) // TODO 设置服务端口号
            .build();
    MybatisPlusToolsApplication.run(config);
}
运行:

右键执行main函数即可。服务启动之后,在浏览器打开地址http://localhost:8068/

mpg-1

输出配置:

mpg-2

mpg-3

代码生成器提供对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目录下,并新建一个test业务模块,在test业务模块中创建自己的Controller、Service、Mapper、Entity,我期望的目录结构如下:
biz
├── test
│   ├── controller
│   ├── entity
│   ├── mapper
│   └── service
│       └── impl

另外,针对entity和controller需要在页面进行一些设置,便于生成更符合要求的代码。

点击Entity行的「操作」按钮,打开「策略配置」选项,将启用lombok、生成注解、生成swagger2注解选项打开并保存。

mpg-5

点击Controller行的「操作」按钮,打开「策略配置」选项,在「Controller的超类名称」栏中填入Controller的父类「com.sofast.core.framework.web.controller.BaseController」,so-fast要求所有的Controller类必须继承该父类。另外将「启用REST接口注解」选项打开并保存。

mpg-6

代码生成:

重新回到Table列表页面,选中需要操作的表,并点击「代码生成」按钮

mpg-7

在打开的页面中,输入以下内容,点击「开始生成」进行定制化代码生成。代码会自动生成到工程对应的包下。

mpg-8

注意:因为在「输出路径」已经填写好了,完整的路径,这里的「功能模块名」请不要填写任何东西!!!

如果需要进行重复生成时,可以开启文件覆盖选项,将之前的旧文件覆盖,但使用时要注意,别覆盖了已经编写好的代码!!!

点击「开始生成」后,我们来看下代码生成结果:

mpg-9

如我们预期一样,我们得到了正确的代码结构和代码文件。

常见问题:

Q:代码生成器页面一段时间后,Table列表显示不出来,控制台有Exception抛出?

A:这个是因为数据库连接池问题,过一会刷新页面就正常了。

Q:自动生成的模块代码,启动服务时报错Bean唯一性冲突,搜索到两个以上Bean?

A:这个是因为MapperScan的扫描问题,需要在MybatisPlusConfig文件中修改@MapperScan注解的值

@MapperScan({"com.sofast.system.*.mapper",  "com.sofast.cms.mapper","com.sofast.demo.mapper", "com.sofast.biz.**.mapper"})

如果有自定义报名的,请在此添加自定义包名路径,末尾必须是mapper。

A2:还有一种可能是确实发生了重名的问题,需要开发人员搜索检查是否有重名文件存在,解决自动生成重名文件有两种方式:1,设计的表名称在去掉固定前缀的前提下不要存在重复的名字;2,可以修改代码生成器的配置,生成文件时带上表的固定前缀。配置如下:

                .basePackage("com.sofast.biz") // TODO 修改为自己要生成的业务包
                                // TODO 不移除表头前缀,如果想移除,请注释此配置
                .nameConverter(new NameConverter() {
                    public String entityNameConvert(String tableName) {
                        if (Strings.isNullOrEmpty(tableName)) {
                            return "";
                        } else {
                            return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));
                        }
                    }
                })
Copyright © 2020. 恩梯梯数据(中国)信息技术有限公司. all right reserved,powered by Gitbook该文件修订时间: 2022-05-23 13:34:56

results matching ""

    No results matching ""