先加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.5.1-RELEASE</version>
</dependency>
<!--引入swagger3.0 OpenApi3.0-->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.2</version>
</dependency>
<!-- 官方建议是springdoc替代springfox-->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>2.0.2</version>
</dependency>
出现这次错误,是没加freemarker依赖,加入即可。
FastAutoGenerator.create("jdbc:mysql://localhost:3306/marketing?useUnicode=true&characterEncoding=UTF-8&useSSL=false&remarks=true&useInformationSchema=true&serverTimezone=Asia/Shanghai", "root", "126")
.globalConfig(builder -> {
builder.author("") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D:\\项目\\test\\demo\\src\\main\\java"); // 指定输出目录
})
.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent("com.example.demo") // 设置父包名
.moduleName("xyd") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\项目\\test\\demo\\src\\main\\resources\\templates")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("activity_immp_index_bak") // 设置需要生成的表名
.addTablePrefix(""); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
生成的代码中根据自己选择是否使用Swagger
<!--引入swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
添加配置类
package com.example.demo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.sql.Types;
import java.util.Collections;
public class codecreate {
public static void main(String[] args) {
code();
}
public static void code(){
FastAutoGenerator.create("jdbc:mysql://localhost:3306/marketing?useUnicode=true&characterEncoding=UTF-8&useSSL=false&remarks=true&useInformationSchema=true&serverTimezone=Asia/Shanghai", "root", "123456")
.globalConfig(builder -> {
builder.author("xydwzh") // 设置作者
.enableSpringdoc() // 开启springdoc,用于swagger3
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.disableOpenDir()//禁止打开输出文件
.outputDir("D:\\项目\\test\\demo\\src\\main\\java"); // 指定输出目录
})
.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent("com.example.demo") // 设置父包名
.moduleName("xyd") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\项目\\test\\demo\\src\\main\\resources\\templates")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("^.*") // 设置需要生成的表名
.addTablePrefix("")// 设置过滤表前缀
// Entity 策略配置
.entityBuilder()
.enableLombok() //开启 Lombok
.enableFileOverride() // 覆盖已生成文件
.naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:下划线转驼峰命
.columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命
.enableTableFieldAnnotation() // 开启生成实体时生成字段注解
// Mapper 策略配置
.mapperBuilder()
.superClass(BaseMapper.class) //设置父类
.formatMapperFileName("%sMapper") //格式化 mapper 文件名称
.enableMapperAnnotation() //开启 @Mapper 注解
.formatXmlFileName("%sXml") //格式化 Xml 文件名称 如 UserXml
.enableFileOverride() // 覆盖已生成文件
// Service 策略配置
.serviceBuilder()
.enableFileOverride() // 覆盖已生成文件
.formatServiceFileName("%sService") // 如:UserService
.formatServiceImplFileName("%sServiceImpl") // 如:UserServiceImpl
.formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService
.formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl
// Controller 策略配置
.controllerBuilder()
.formatFileName("%sController") // 如 UserController
.enableRestStyle() //开启生成 @RestController 控制器
.enableFileOverride();// 覆盖已生成文件
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
嗯嗯应该很全够用了,剩下的自己看官网去吧。
生成要是@GETTER爆红,是缺少lombok包导入即可
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>compile</scope>
</dependency>
如果出现多个主键的表则需要导入包
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.5.1-RELEASE</version>
</dependency>
实体类
之后再将主键ID注释改为
@MppMultiId
@TableField
Dao层
这里区别于mybatis或mybatisplus,需要继承的是 MppBaseMapper
service层
同样和通常的实现项不同,这个service接口需要继承的是IMppService 实现类需要继承的是 MppServiceImpl
最后在启动类加上
@EnableMPP
//开启复合主键
springboot与swagger个版本对应
出现启动出空指针的可以看这个,降版本或者在启动类加
@EnableWebMvc或在yml文件中加入
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher