springboot3 project uses swagger3

Article directory

    • springboot3 project uses swagger3
        • rely
        • swaggerConfig configuration
        • Entity class example
        • Control layer example
          • Universal return result encapsulation
        • Annotation description
        • address
        • git common commands

springboot3 project uses swagger3

Dependencies
 <!--swagger3-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.1.0</version>
        </dependency>


    <repositories>
        <!--Alibaba Cloud Image-->
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
swaggerConfig configuration
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {<!-- -->
    @Bean
    public OpenAPI springShopOpenAPI() {<!-- -->
        return new OpenAPI()
                .info(new Info().title("title")
                        .contact(new Contact())
                        .description("My API Documentation")
                        .version("v1")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                        .description("External Document")
                        .url("https://springshop.wiki.github.org/docs"));
    }
}


Example of entity class
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(name = "Employee", description = "$!{table.comment}")
public class Emp {<!-- -->
    @ExcelProperty("ID")
    @Schema(description = "ID")
    private int id;
    @ExcelProperty("username")
    @Schema(description = "username")
    private String names;
    @ExcelProperty("Salary")
    @Schema(description = "salary")
    private double salary;
    @ExcelProperty("birthday")
    @Schema(description = "birthday")
    private Date birthday;
    @ColumnWidth(20)
    @ExcelProperty("avatar")
    @Schema(description = "avatar")
    private String photo;
    
// @ColumnWidth(20)
// @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// @ExcelProperty("Creation Date")
// private Date u_create_time;
}

Control layer example
 @Operation(summary = "User List")
    @GetMapping("/selectAll")
    public Result<List<Emp>> selectAll() {<!-- -->
        return Result.success(excelMapper.selectEmpAll());
    }
Universal return result packaging
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum ResultCode {<!-- -->
    SUCCESS(200, "success"),
    REQUEST_ERROR(400, "Parameter verification failed"),
    FAILURE(500, "System Error");

    private final int code;
    private final String msg;
}

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

@Builder(toBuilder = true)
@AllArgsConstructor
@Setter
@Getter
@Slf4j
public class Result<T> {<!-- -->
    /**
     * Prompt information
     */
    @Schema(description = "prompt information")
    private String message;
    /**
     * whether succeed
     */
    @Schema(description = "Whether it was successful")
    private boolean success;
    /**
     * Return status code
     */
    @Schema(description = "Return status code")
    private Integer code;
    /**
     * data
     */
    @Schema(description = "data")
    private T data;

    public Result() {<!-- -->
    }

    public static Result success() {<!-- -->
        Result Result = new Result();
        Result.setSuccess(Boolean.TRUE);
        Result.setCode(ResultCode.SUCCESS.getCode());
        Result.setMessage(ResultCode.SUCCESS.getMsg());
        return Result;
    }

    public static Result success(String msg) {<!-- -->
        Result Result = new Result();
        Result.setMessage(msg);
        Result.setSuccess(Boolean.TRUE);
        Result.setCode(ResultCode.SUCCESS.getCode());
        return Result;
    }

    public static Result success(Object data) {<!-- -->
        Result Result = new Result();
        Result.setData(data);
        Result.setSuccess(Boolean.TRUE);
        Result.setCode(ResultCode.SUCCESS.getCode());
        Result.setMessage(ResultCode.SUCCESS.getMsg());
        return Result;
    }

    /**
     * Return failure message
     *
     * @return Result
     */
    public static Result failure() {<!-- -->
        Result Result = new Result();
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(ResultCode.FAILURE.getCode());
        Result.setMessage(ResultCode.FAILURE.getMsg());
        return Result;
    }

    /**
     * Return failure message
     *
     * @param msg failure information
     * @return Result
     */
    public static Result failure(String msg) {<!-- -->
        Result Result = new Result();
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(ResultCode.FAILURE.getCode());
        Result.setMessage(msg);
        return Result;
    }

    public static Result failure(Integer code, String msg) {<!-- -->
        Result Result = new Result();
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(code);
        Result.setMessage(msg);
        return Result;
    }


    public static Result failure(String msg, ResultCode exceptionCode) {<!-- -->
        Result Result = new Result();
        Result.setMessage(msg);
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(exceptionCode.getCode());
        Result.setData(exceptionCode.getMsg());
        return Result;
    }

    /**
     * Return failure message
     *
     * @param exceptionCode error information enumeration
     * @return Result
     */
    public static Result failure(ResultCode exceptionCode) {<!-- -->
        Result Result = new Result();
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(exceptionCode.getCode());
        Result.setMessage(exceptionCode.getMsg());
        return Result;
    }

    /**
     * Return failure message
     *
     * @param exceptionCode error information enumeration
     * @param msg Custom error message
     * @return Result
     */
    public static Result failure(ResultCode exceptionCode, String msg) {<!-- -->
        Result Result = new Result();
        Result.setMessage(msg);
        Result.setSuccess(Boolean.FALSE);
        Result.setCode(exceptionCode.getCode());
        return Result;
    }

}
Annotation description
swagger2 OpenAPI 3 Annotation location
@Api @Tag(name = “Interface Class Description”) On the Controller class
@ApiOperation @Operation(summary = “Interface method description”) On the Controller method
@ApiImplicitParams @ Parameters On the Controller method
@ApiImplicitParam @Parameter(description=”Parameter Description”) In @Parameters on the Controller method
@ApiParam @Parameter(description=”Parameter Description”) In the Controller method On the parameter
@ApiIgnore @Parameter(hidden = true) or @Operation(hidden = true) or @Hidden
@ApiModel @Schema DTO class
@ApiModelProperty @Schema DTO attribute
Access address
http://localhost:8080/doc.html
http://localhost:8080/swagger-ui/index.html
Git common commands
git tag -a v0.1.7 -m "Complete image upload interface"
git push origin tag v0.1.7
git push origin --tags

git tag -a v0.1.6 -m "Complete Excel data import and export"
git push origin tag v0.1.6
git push origin --tags

git tag -a v0.1.5 -m "Complete verification code generation interface"
git push origin tag v0.1.5
git push origin --tags

git tag -a v0.1.4 -m "Interface parameter verification, unified exception interception"
git push origin tag v0.1.4
git push origin --tags

git tag -a v0.1.3 -m "Encapsulate Result and unify return values"
git push origin tag v0.1.3
git push origin --tags

git tag -a v0.1.2 -m "restful and rpc"
git push origin tag v0.1.2
git push origin --tags

git tag -a v0.1.1 -m "Support mybatis, connect to the database, and complete basic additions, deletions, modifications and checks"
git push origin tag v0.1.1
git push origin --tags

git tag -a v0.1 -m "Initialization project, spring boot 3 + swagger 3"
git push origin tag v0.1
git push origin --tags