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的接口监测