MyBaits Plus代码生成器
# MyBaits Plus代码生成器
MP提供了一个代码生成器mybatis-plus-generator
,可以帮我们快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
目前有新 (opens new window)、旧 (opens new window)两个版本,新版本指3.5.1及以上版本。这里用新版本进行学习:
# 安装
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
- 使用版本:v3.5.3,源码 (opens new window)
# 快速生成
public class FastAutoGeneratorTest {
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8", "root", "123456");
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir") + "/mybatis-plus-springboot";
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
.globalConfig(builder -> {
builder.author("jack.wen") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir(projectPath + "/src/main/java") // 指定输出目录
.disableOpenDir();
})
.packageConfig(builder -> {
builder.parent("org.example.hello.mp.generator") // 设置父包名
.moduleName("test") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/resources/mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("user") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
# 交互式生成
public class FastAuoGeneratorMutuallyTest {
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8", "root", "123456");
public static void main(String[] args) {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
// 全局配置
.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?"))
.fileOverride()
.disableOpenDir())
// 包配置
.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.controllerBuilder()
.enableRestStyle()
.enableHyphenStyle()
.entityBuilder()
.enableLombok()
.build()
)
// 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
更多例子可以查看官方例子 (opens new window)。
# 配置
代码生成器配置详见官方文档 (opens new window)。
上次更新: 5/30/2023, 11:23:39 PM