SpringBoot整合Mybatis-Plus代码自动生成,以及接口文档配置

SpringBoot整合Mybatis-Plus代码自动生成,以及接口文档配置

添加相关依赖

导入Mybatis-Plus以及代码生成依赖

		<dependency>
   		 	<groupId>com.baomidou</groupId>
   		 	<artifactId>mybatis-plus-boot-starter</artifactId>
   		 	<version>3.5.1</version>
		</dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- velocity -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!-- freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!-- Swagger2 核心依赖 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!--配合Swagger2 形成一个knife4j页面 -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>

整合mybatis-plus,以及代码生成类

springboot配置文件

server:
  port: 8088
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/databaseName
    username: root
    password: xxxx
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false
  mapper-locations: classpath:mapper/*.xml

创建代码生成器工具类

public class CodeGenerator {
    public static void main(String[] args) {

        //这块吧自己的表名添加到集合
        List<String> tables = new ArrayList<>();
        tables.add("ms_article");
        tables.add("ms_sys_user");

        // 项目路径
        String projectPath = System.getProperty("user.dir");

        // 代码生成器
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root", "root")
                // 全局配置
                .globalConfig(builder -> {
                    // 作者
                    builder.author("xxx")
                            // 输出路径
                            .outputDir(projectPath + "/src/main/java")
                            // 禁止打开输出目录
                            .disableOpenDir()
                            // 开启swagger
                            .enableSwagger()
                            // 注释日期
                            .commentDate("yyyy/MM/dd HH:mm")
                            // 开启覆盖之前生成的文件
                            .fileOverride();
                })
                .packageConfig(builder -> {
                    builder.parent("com.blog")
                            .entity("pojo")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("controller")
                            .mapper("mapper")
                            .xml("mapper")
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper/"));
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tables)
                            // 增加过滤表前缀
                            .addTablePrefix("ms_")
                            // service策略配置
                            .serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            // entity策略配置
                            .entityBuilder()
                            // 数据库表映射到实体的命名策略
                            .naming(NamingStrategy.underline_to_camel)
                            // 数据库表字段映射到实体的命名策略
                            .columnNaming(NamingStrategy.no_change)
                            // 开启lombok模型
                            .enableLombok()
                            // controller策略设置
                            .controllerBuilder()
                            .formatFileName("%sController")
                            .enableRestStyle()
                            .enableHyphenStyle()
                            // mapper策略设置
                            .mapperBuilder()
                            // 生成通用的resultMap
                            .enableBaseResultMap()
                            .enableBaseColumnList()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}

工具类中的表名 数据库连接信息,包结构需要修改一下,完成之后运行main方法即可

整合Swagger2接口文档knife4j界面美化

只需一个配置类即可

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))  //添加ApiOperiation注解的被扫描
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("Api Documentation").description("Api Documentation")
                .build();
    }
}

启动项目,访问接口文档地址,默认为 http://localhost:8888/doc.html 如果报错 那就是SpringBoot版本太高
解决办法
再SpringBoot配置文件中加上这个

spring:
	mvc:
    	pathmatch:
      		matching-strategy: ant_path_matcher 

版权声明:本文为xiaobaijun_ge原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。