Skip to content

代码生成器

使用方式

  1. 启动项目后访问本地接口文档地址 http://{localhost}:{port}/doc.html
  2. 在文档中找到逆向工程-开发人员接口
图片

首次代码生成

  1. 点击代码生成接口 -> 调试,配置所需参数

  2. 参数介绍

    • author:作者
    • packageName:生成文件的包名
    • moduleName:生成的模块名称,如 user、dept、role
    • databaseName:生成文件的数据库名,为了开发人员不输错,采用下拉框显示。后面会介绍如何修改这些默认值
    • tableName:生成的表名,如果要在同一个模块下生成多个表的代码,以英文逗号分隔,如 auth_user,auth_user_dept
    • idType:生成表的注解类型,如自增、UUID、雪花、MyBatis Plus类型,如不清楚,请查询 MyBatis Plus 官方文档
    • tablePrefix:表前缀,如果我们的表是有前缀的,例如 auth_user,而生成的类想是 User 开头而不是 AuthUser,则需要填写该字段,会自动去掉前缀
    • fieldPrefix:表字段前缀,如果生成的表里面每个字段也有前缀,而我们想最终生成的文件实体类去掉这些前缀,则需要填写该字段,会自动去掉前缀。例如 abc_user_id,填写 abc 后,生成的字段就是 String userId
  3. 点击发送,代码就会自动生成到项目里面我们设置的模块中 图片

  4. 生成后代码

    图片
  5. 生成后的接口 图片

重新生成

  1. 如果某个表中字段进行编辑(新增/修改/删除),需要重新生成代码
  2. 点击重新生成表结构接口,代码就会重新生成
  3. 重新生成的代码只生成实体类 PO、Mapper、XML,其他文件不会重新生成,所以需要开发人员遵循对应的规范,详情查看编码规范要求里面有介绍

修改接口默认值

  1. 打开 yipeng-common -> framework-core -> com.kp.framework.entity.po 中的 GeneratorPO 实体类
  2. 在该类里面修改成自己所需的默认值
java
@Data
@ApiModel(value="GeneratorPO", description="GeneratorPO")
public class GeneratorPO {

    @ApiModelProperty(value = "作者", required = true, example = "lipeng")
    private String author;


    @ApiModelProperty(value = "数据库", required = true, allowableValues = "yipeng_auth,yipeng_bpm", allowEmptyValue = true)
    private String databaseName;

    @ApiModelProperty(value = "包名 默认 com.kp.framework.modules", example = "com.kp.framework.modules")
    private String backageName = "com.kp.framework.modules";

    @ApiModelProperty(value = "模块名", required = true)
    private String modulesName;

    @ApiModelProperty(value = "数据库表名称", required = true, example = "[\"auth_user\", \"auth_menu\"]" )
    private List<String> tableName;

    @ApiModelProperty(value = "主键策略", required = true, example = "ASSIGN_UUID")
    private IdType idType;

    @ApiModelProperty(value = "表前缀")
    private List<String> tablePrefix;

    @ApiModelProperty(value = "字段前缀")
    private List<String> filesPrefix;

}

说明

  • 框架默认生成是没有 Service 接口层的,作者建议如果没有多实现,没必要非要添加,避免写教学式代码

  • 如果想要生成带 Service 接口层的代码,修改以下配置即可:修改 framework-core 包下 KPMyBatisPlusNew 文件里面的内容

    1. 修改 configurePackage 方法:
java
private Consumer<PackageConfig.Builder> configurePackage(String path, String packName) {
     return builder -> {
         builder.parent(packName) 
                 .controller("controller") 
                 .service("service") # 这里不需要动
                 .serviceImpl("service")  #这里改成 service.impl
                 .entity("po") 
                 .mapper("mapper") 
                 .xml("mapper.xml") 
                 .pathInfo(Collections.singletonMap(OutputFile.xml, KPStringUtil.format("{0}/src/main/resources/mapper/{1}", path, packName.substring(packName.lastIndexOf(".") + 1, packName.length()))));  
     };
 }
  1. 修改 configureTemplate 方法:
java
 private Consumer<TemplateConfig.Builder> configureTemplate() {
     return builder -> {
         builder.disable(TemplateType.SERVICE)
                 .controller("freemarker/controller.java")
   //                    .service(null) #这里的注释打开
                 .serviceImpl("freemarker/serviceImpl.java")
                 .mapper("freemarker/mapper.java")
                 .entity("freemarker/entity.java")
                 .xml("freemarker/mapper.xml");
     };
 }