SpringBoot整合Mybatise-Pluse(新版代码生成器带swagger)

真是世事无常大肠包小肠,我是你们的老朋友张豪杰!!!
废话不多说,整活!!
最后的效果图
在这里插入图片描述

  1. 添加依赖

	<!--mybatis-plus的springboot支持-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.5.2</version>
		</dependency>
		<!--		代码生成器模板-->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
		</dependency>
		<!--mysql驱动-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.28</version>
		</dependency>
<!--		代码生成器-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.5.2</version>
		</dependency>
<!--		swagger我的springboot是2.7.3的所以用的3.00的swagger如果你最后swagger不能使那你自己解绝吧哈哈-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-boot-starter</artifactId>
			<version>3.0.0</version>
		</dependency>
	</dependencies>
  1. yml的配置
server:
  port: 5771
spring:
  mvc: # 这个用swagger3.0.0必须配置
    pathmatch:
      matching-strategy: ant_path_matcher
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 132456
    url: jdbc:mysql://localhost:3306/businessSoftware?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
    # 初始化时建立的物理连接数。初始化发生在显式调用init方法,或者第一次getConnection时.
    initial-size: 5
    # 连接池最大物理连接数量。
    max-active: 50
    # 连接池最小物理连接数量。
    min-idle: 5
    # 获取连接时最大等待时间,单位为毫秒。
    # 配置之后,缺省启用公平锁,并发效率会有所下降,若需要可以通过配置useUnfairLock属性为true使用非公平锁。
    max-wait: 6000
    # 是否缓存preparedStatement,也就是PSCache。
    # PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    pool-prepared-statements: true
    # 要启用PSCache,其值必须大于0,当大于0时,poolPreparedStatements自动触发修改为true。
    # 在Druid中,不会存在OraclePSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100。
    max-pool-prepared-statement-per-connection-size: 20
    # 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。
    # 如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
    validation-query: select 1 from dual
    # 检测连接是否有效的超时时间,单位为秒。
    # 底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法。
    #      validation-query-timeout: 30
    # 有两个含义:
    #  1) Destroy线程会检测连接的间隔时间,若连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
    #  2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明。
    time-between-eviction-runs-millis: 60000
    # 连接保持空闲而不被驱逐的最长时间。
    min-evictable-idle-time-millis: 300000
    # 建议配置为true,不影响性能,并且保证安全性。
    # 申请连接的时候检测,若空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    test-while-idle: true
    # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    test-on-borrow: false
    # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    test-on-return: false
    # 类型是字符串,通过别名的方式配置扩展的拦截器插件,常用的拦截器插件有:
    # 监控统计用的filter:stat,日志用的filter:log4j,防御sql注入攻击的filter:wall,三个同时配置的化,用逗号隔开。
    # 注意,Druid中的filter-class-names配置项是不起作用的,必须采用filters配置项才可以。
    filters: stat,wall,log4j2
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录。
    connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合并多个DruidDataSource的监控数据
    use-global-data-source-stat: true
# 创建在resources目录下 ->创建mapper目录->创建xxx.xml文件
mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
     #  数据库支持id唯一
  global-config:
    id-type: ASSIGN_ID
    capital-mode: false
    
  1. 将官方jar包里的模板放到自己项目的/resources/templates目录下(并按这自己的需求在这些模板里进行改动)
    在这里插入图片描述
    在这里插入图片描述
    例如我们项目中用到了swagger那咱可以在controller.java.ftl中引入swagger,并使用@Api等等。。
    在这里插入图片描述
    同理我们在 其他的模板中也可以随意的规则的去改的。

  2. 编辑代码生成器类

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

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.*;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Component
public class GenareterCode {
    public static void main(String[] args) {
        // 生产文件的项目相对位置
        StringBuffer projectPath = new StringBuffer();
        // 获取系统路径
        String systemPath = System.getProperty("user.dir");
        // 将反斜杠全部替换为双斜杠 并拼接项目路径
        projectPath.append(systemPath.replaceAll("\\\\", "//"));
        System.out.println(projectPath);

        //entity表字段属性List,用于生成时间自动填充属性
        List<IFill> iFills = new ArrayList<>();
        iFills.add(new Column("create_time", FieldFill.INSERT));
        iFills.add(new Column("update_time", FieldFill.INSERT_UPDATE));

        FastAutoGenerator.create("jdbc:mysql://localhost:3306/businessSoftware?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai", "root", "123456")
                .globalConfig(builder -> {
                    builder
                            .author("zhj") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            //.fileOverride() // 覆盖已生成文件
                            .outputDir(projectPath + "//src//main//java")// 指定输出目录
                            .disableOpenDir();// 生成代码后不打开输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.mepowersoft") // 设置父包名
                            .moduleName("businessSoftware") // 设置父包模块名
                            .entity("entity")
                            .controller("controller") // Controller 包名	默认值:controller
                            .other("util") // 自定义文件包名	输出自定义文件时所用到的包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "//src//main//resources//mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(getTables(scanner("请输入表名,多个英文逗号分隔?所有输入 all:"))) // 设置需要生成的表名
                            .addTablePrefix("base_")// 设置过滤表前缀
                            .entityBuilder().addTableFills(iFills)//生成时间自动填充属性
                            .controllerBuilder().enableRestStyle()//开启@RestController风格
                            .serviceBuilder().formatServiceFileName("%sService"); //去掉默认的I前缀
                })
                //使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                //设置自定义模板路径
                .templateConfig(builder -> {
                    builder.controller("/templates/controller.java");
                })
                .execute();

    }

    /**
     * 读取控制台内容
     */
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append(tip);
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (
                    StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    /**
     * 处理 all 情况
     */

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


}

到这里将上面的类里的配置重写完,运行main方法会出现下图直接输入all会将数据库中的所有表都生成的
在这里插入图片描述
在这里插入图片描述
ok现在重载一下项目
在这里插入图片描述
看 我们的项目框架 就自动生成好了!!!在这里插入图片描述
咱自己可以在启动类上加上mapper的扫描注解
在这里插入图片描述
这时在生成好的代码框架中加上swagger的配置类

package com.mepowersoft.businessSoftware.config.swagger;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;


@Configuration
@EnableSwagger2
// 访问地址:localhost:5771/swagger-ui
public class SwaggerConfig {
    // api接口包扫描路径
    public static final String SWAGGER_SCAN_BASE_PACKAGE = "com.mepowersoft.businessSoftware.controller";
    // 接口文档版本
    public static final String VERSION = "1.0.0";

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                //用于分组功能,也可以不配置
                //注册整体api信息
                .apiInfo(apiInfo())
                //swagger功能是否启用,可以通过配置设置,也可以先写死
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BASE_PACKAGE))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("摩嵌商用软件")
                .description("乱七八杂的功能都有,天津魔嵌动力技术有限公司就是牛逼!")
                .contact(new Contact("摩嵌动力", "http://mepower.com.cn", "mo_embeddedpower@vip.163.com"))
                .version(VERSION)
                .build();
    }

}

最后访问 ip:端口/swagger-ui/

在这里插入图片描述

最后大家都骄傲的歇歇忙了半天了不是,觉得有用请给个好评哈哈!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值