官网:MyBatis-Plus (baomidou.com)
顾名思义,就是它为你生成代码,这里可以为你生成Entity、Mapper、MapperXML、Service、controller等各个模块的代码,极大的提升开发效率
环境:mysql8.0.24、mybatis-plus3.5.3.1、springboot3.1.0
代码生成器(新),提供了两种使用方式:快速生成、交互式生成。 由于是新版本,有很多没有解释清楚的地方,容易踩坑: 1、fileOverride已被弃用 10:03:20.036 [main] WARN com.baomidou.mybatisplus.generator.config.GlobalConfig -- 全局覆盖已有文件的配置已失效,已迁移到策略配置中 2、模板引擎的依赖 3、swagger模式版本问题
1、快速生成
代码语言:javascript复制package com.gc.util;
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.engine.FreemarkerTemplateEngine;
import java.sql.Types;
import java.util.Collections;
public class Generator2 {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql:******", "root", "1234")
.globalConfig(builder -> {
builder.author("baomidou") // 设置作者
// .enableSwagger() // 开启 swagger 模式
// .fileOverride() // 覆盖已生成文件
.outputDir("F:\ideagzkj\SpringbootDemo\MybatisPlus\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.gc") // 设置父包名
.moduleName("test") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "F:\ideagzkj\SpringbootDemo\MybatisPlus\src\main\resources\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("user","student") // 设置需要生成的表名
// .addTablePrefix("u_", "s_") // 设置过滤表前缀
;
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
- 由于使用的Freemarker引擎模板,所以要引入该模板依赖
<!--代码生成器-->
<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>
可以看到上面我给 enableSwagger注释了,因为它默认生成的是swagger2的注解,我的是swagger3版本。 fileOverride 一定要注释掉,不然可能执行不成功,出现上面写的警告
2、交互式生成
代码语言:javascript复制package com.gc.util;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Generator {
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig.Builder("jdbc:mysql:******","root","1234");
public static void main(String[] args) {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
// 全局配置
// .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")))
.globalConfig((scanner, builder) -> builder
.author(scanner.apply("请输入作者名称?"))
.outputDir("F:\ideagzkj\SpringbootDemo\MybatisPlus\src\main\java\com\gc")
)
// 包配置
.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok().addTableFills(
new Column("create_time", FieldFill.INSERT)
).build())
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
*/
.execute();
}
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
我修改了一下官网提供的代码,因为控制台输入包名后,生成文件没有到当前工作目录,所以这里指定了一下当前工作目录
- 这里采用的默认Velocity模板引擎
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
总结
这是官网提供的两种最基础生成方式! 它们都将Entity、Mapper、MapperXML、Service、controller生成了但是第一种没有采用lombok表达式,第二种的MapperXML生成在和接口一个目录下 当然可以通过配置更加完善优化,可以去官网查看