springboot代码生成器+mp+swagger快捷开发

首先导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.16</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!-- mp代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- freemaker模版引擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

其次配置配置文件

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.16</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!-- mp代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- freemaker模版引擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

再添加两个类

package com.tsubaki.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

@Configuration
@EnableOpenApi
public class SwaggerConfiguration {


    @Bean
    public Docket docket(Environment environment){

        //设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","test");
        //通过environment.acceptsProfiles(profiles)判断当前是否为自己设定的环境中
        boolean flag = environment.acceptsProfiles(profiles);

        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .groupName("tsubaki")
                .enable(flag)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.tsubaki.controller"))
                .build();
    }

    private ApiInfo apiInfo(){

        Contact contact = new Contact(
                "tsubaki",
                "https://tsubaki_yfan.gitee.io",
                "731613846@qq.com"
        );

        return new ApiInfo(
                "后端开发框架API文档",
                "没什么描述的",
                "1.0",
                "https://tsubaki_yfan.gitee.io",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList<>());
    }
}

构造器类

package com.tsubaki.generator;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CodeGenerator {

    private static final String url = "jdbc:mysql://localhost:3306/kaishun";
    private static final String outputDir = "D:/Programming/WorkHome/IdeaHome/demo3test/src/main/java";
    private static final String mapperXmlDir = "D:/Programming/WorkHome/IdeaHome/demo3test/src/main/resources/mapper";

    public static void main(String[] args) {
        FastAutoGenerator.create(url,"root","root")
                // 全局配置
                .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?"))
                        //覆盖已生成文件默认为false
                        .fileOverride()
                        //指定输出目录
                        .outputDir(outputDir)
                        //开启 swagger 模式 默认为false
                        .enableSwagger()
                )
                // 包配置
                .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?"))
                        //路径配置信息 Collections.singletonMap(OutputFile.mapperXml, "D://")
                        .pathInfo(Collections.singletonMap(OutputFile.mapperXml,mapperXmlDir))
                )
                // 策略配置
                .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                        //增加过滤表前缀
                        .addTablePrefix("tbl_")
                        //实体策略配置
                        .entityBuilder()
                        //开启链式模型    默认值:false
                        .enableChainModel()
                        //开启 lombok 模型    默认值:false
                        .enableLombok()
                        //开启生成实体时生成字段注解    默认值:false
                        .enableTableFieldAnnotation()
                        //添加表字段填充
                        .addTableFills()
                        .addTableFills(
                                new Column(
                                        "create_time", FieldFill.INSERT
                                )
                        )
                        //controller 策略配置
                        .controllerBuilder()
                        //开启驼峰转连字符    默认值:false
                        .enableHyphenStyle()
                        //开启生成@RestController 控制器    默认值:false
                        .enableRestStyle()
                        //格式化文件名称
                        .formatFileName("%sController")


                        //mapper 策略配置
                        .mapperBuilder()
                        //启用 BaseResultMap 生成    默认值:false
                        .enableBaseResultMap()
                        //格式化 mapper 文件名称
                        .formatMapperFileName("%sMapper")
                        //格式化 xml 实现类文件名称
                        .formatXmlFileName("%sMapper")

                        //service 策略配置
                        .serviceBuilder()
                        //格式化 service 接口文件名称
                        .formatServiceFileName("%sService")
                        //格式化 service 实现类文件名称
                        .formatServiceImplFileName("%sServiceImpl")

                        .build()
                )
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();


    }
    // 处理 all 情况
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

之后就可以自动生成代码

访问 http://127.0.0.1:8080/swagger-ui/index.html/ 进行swagger的接口监测

posted @ 2022-01-29 12:07  豆小鱼  阅读(176)  评论(0编辑  收藏  举报