diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java index 8fc0753d..c8dd9b96 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/EntityConfig.java @@ -61,6 +61,25 @@ public class EntityConfig { */ private boolean withSwagger; + /** + * Swagger 版本 + */ + private SwaggerVersion swaggerVersion; + + public enum SwaggerVersion { + FOX("FOX"), + DOC("DOC"); + private final String name; + + SwaggerVersion(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + } + /** * 实体类数据源。 */ @@ -168,6 +187,23 @@ public class EntityConfig { */ public EntityConfig setWithSwagger(boolean withSwagger) { this.withSwagger = withSwagger; + this.swaggerVersion = SwaggerVersion.FOX; + return this; + } + + /** + * Swagger 版本 + */ + public SwaggerVersion getSwaggerVersion() { + return swaggerVersion; + } + + /** + * 设置 Swagger 版本 + */ + public EntityConfig setSwaggerVersion(SwaggerVersion swaggerVersion) { + this.swaggerVersion = swaggerVersion; + this.withSwagger = swaggerVersion != null; return this; } diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java index 6f7633e9..39eed1ad 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/config/GlobalConfig.java @@ -898,6 +898,13 @@ public class GlobalConfig { return getEntityConfig().isWithSwagger(); } + /** + * @see EntityConfig#getSwaggerVersion() + */ + public EntityConfig.SwaggerVersion getSwaggerVersion() { + return getEntityConfig().getSwaggerVersion(); + } + /** * @see EntityConfig#setWithSwagger(boolean) */ diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java index 105fb5fa..9e6d104d 100644 --- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java +++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/generator/impl/ControllerGenerator.java @@ -70,6 +70,7 @@ public class ControllerGenerator implements IGenerator { params.put("controllerConfig", controllerConfig); params.put("javadocConfig", globalConfig.getJavadocConfig()); params.put("withSwagger", globalConfig.isEntityWithSwagger()); + params.put("swaggerVersion", globalConfig.getSwaggerVersion()); globalConfig.getTemplateConfig().getTemplate().generate(params, templatePath, controllerJavaFile); diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl index 2bec0661..b6e2e56c 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/controller.tpl @@ -23,12 +23,16 @@ import org.springframework.stereotype.Controller; #if(controllerConfig.superClass != null) import #(controllerConfig.buildSuperClassImport()); #end -#if(withSwagger) +#if(withSwagger && swaggerVersion.getName() == "FOX") import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; #end - +#if(withSwagger && swaggerVersion.getName() == "DOC") +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +#end import java.io.Serializable; import java.util.List; @@ -43,9 +47,12 @@ import java.util.List; #else @Controller #end -#if(withSwagger) +#if(withSwagger && swaggerVersion.getName() == "FOX") @Api("#(tableComment)接口") #end +#if(withSwagger && swaggerVersion.getName() == "DOC") +@Tag(name = "#(tableComment)接口") +#end @RequestMapping("/#(firstCharToLowerCase(entityClassName))") public class #(table.buildControllerClassName()) #if(controllerConfig.superClass)extends #(controllerConfig.buildSuperClassName()) #end { @@ -59,10 +66,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return {@code true} 添加成功,{@code false} 添加失败 */ @PostMapping("save") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("保存#(tableComment)") #end - public boolean save(@RequestBody #if(withSwagger)@ApiParam("#(tableComment)") #end #(entityClassName) #(entityVarName)) { + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="保存#(tableComment)") + #end + public boolean save(@RequestBody #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)")#end #(entityClassName) #(entityVarName)) { return #(serviceVarName).save(#(entityVarName)); } @@ -73,10 +83,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return {@code true} 删除成功,{@code false} 删除失败 */ @DeleteMapping("remove/{id}") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("根据主键#(tableComment)") #end - public boolean remove(@PathVariable #if(withSwagger)@ApiParam("#(tableComment)主键") #end Serializable id) { + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="根据主键#(tableComment)") + #end + public boolean remove(@PathVariable #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end Serializable id) { return #(serviceVarName).removeById(id); } @@ -87,10 +100,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return {@code true} 更新成功,{@code false} 更新失败 */ @PutMapping("update") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("根据主键更新#(tableComment)") #end - public boolean update(@RequestBody #if(withSwagger)@ApiParam("#(tableComment)主键") #end #(entityClassName) #(entityVarName)) { + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="根据主键更新#(tableComment)") + #end + public boolean update(@RequestBody #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end#(entityClassName) #(entityVarName)) { return #(serviceVarName).updateById(#(entityVarName)); } @@ -100,9 +116,12 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return 所有数据 */ @GetMapping("list") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("查询所有#(tableComment)") #end + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="查询所有#(tableComment)") + #end public List<#(entityClassName)> list() { return #(serviceVarName).list(); } @@ -114,10 +133,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return #(tableComment)详情 */ @GetMapping("getInfo/{id}") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("根据主键获取#(tableComment)") #end - public #(entityClassName) getInfo(@PathVariable #if(withSwagger)@ApiParam("#(tableComment)主键") #end Serializable id) { + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="根据主键获取#(tableComment)") + #end + public #(entityClassName) getInfo(@PathVariable #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end#end Serializable id) { return #(serviceVarName).getById(id); } @@ -128,10 +150,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass * @return 分页对象 */ @GetMapping("page") - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiOperation("分页查询#(tableComment)") #end - public Page<#(entityClassName)> page(#if(withSwagger)@ApiParam("分页信息") #end Page<#(entityClassName)> page) { + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Operation(description="分页查询#(tableComment)") + #end + public Page<#(entityClassName)> page(#if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("分页信息") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="分页信息")#end Page<#(entityClassName)> page) { return #(serviceVarName).page(page); } diff --git a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl index e4e683f5..12966c13 100644 --- a/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl +++ b/mybatis-flex-codegen/src/main/resources/templates/enjoy/entity.tpl @@ -1,14 +1,18 @@ #set(withLombok = entityConfig.isWithLombok()) #set(withSwagger = entityConfig.isWithSwagger()) +#set(swaggerVersion = entityConfig.getSwaggerVersion()) package #(packageConfig.entityPackage); #for(importClass : table.buildImports()) import #(importClass); #end -#if(withSwagger) +#if(withSwagger && swaggerVersion.getName() == "FOX") import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; #end +#if(withSwagger && swaggerVersion.getName() == "DOC") +import io.swagger.v3.oas.annotations.media.Schema; +#end #if(withLombok) import lombok.AllArgsConstructor; import lombok.Builder; @@ -28,13 +32,15 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor #end -#if(withSwagger) +#if(withSwagger && swaggerVersion.getName() == "FOX") @ApiModel("#(table.getComment())") #end +#if(withSwagger && swaggerVersion.getName() == "DOC") +@Schema(description = "#(table.getComment())") +#end #(table.buildTableAnnotation()) public class #(table.buildEntityClassName())#(table.buildExtends())#(table.buildImplements()) { #for(column : table.columns) - #set(comment = javadocConfig.formatColumnComment(column.comment)) #if(isNotBlank(comment)) /** @@ -45,9 +51,12 @@ public class #(table.buildEntityClassName())#(table.buildExtends())#(table.build #if(isNotBlank(annotations)) #(annotations) #end - #if(withSwagger) + #if(withSwagger && swaggerVersion.getName() == "FOX") @ApiModelProperty("#(column.comment)") #end + #if(withSwagger && swaggerVersion.getName() == "DOC") + @Schema(description = "#(column.comment)") + #end private #(column.propertySimpleType) #(column.property); #end