代码生成器
使用方式
- 启动项目后访问本地接口文档地址
http://{localhost}:{port}/doc.html - 在文档中找到逆向工程-开发人员接口

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

生成后代码

生成后的接口

重新生成
- 如果某个表中字段进行编辑(新增/修改/删除),需要重新生成代码
- 点击重新生成表结构接口,代码就会重新生成
- 重新生成的代码只生成实体类
PO、Mapper、XML,其他文件不会重新生成,所以需要开发人员遵循对应的规范,详情查看编码规范要求里面有介绍
修改接口默认值
- 打开
yipeng-common -> framework-core -> com.kp.framework.entity.po中的GeneratorPO实体类 - 在该类里面修改成自己所需的默认值
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文件里面的内容- 修改
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()))));
};
}- 修改
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");
};
}