赞
踩
真是世事无常大肠包小肠,我是你们的老朋友张豪杰!!!
废话不多说,整活!!
最后的效果图
<!--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>
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中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说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
将官方jar包里的模板放到自己项目的/resources/templates目录下(并按这自己的需求在这些模板里进行改动)
例如我们项目中用到了swagger那咱可以在controller.java.ftl中引入swagger,并使用@Api等等。。
同理我们在 其他的模板中也可以随意的规则的去改的。
编辑代码生成器类
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/
最后大家都骄傲的歇歇忙了半天了不是,觉得有用请给个好评哈哈!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。