记录使用最新代码生成器的过程。
系列文章指路👉
系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类
1.版本
- spring-boot 3.0.6
- mybatis-plus 3.5.3.1
- mybatis-plus-generator 3.5.3.1
- mysql 8
- jdk 17
2.pom.xml
没有模板引擎或者没有数据库driver,生成过程中均会报错
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- mybatis-plus 代码生成器 -->
<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>
<version>2.3.30</version>
</dependency>
<!-- mysql driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
3.生成路径
参考:官方代码生成器(新)
大部分代码一样的,解释下文件路径的部分吧:
贴一下我的代码路径:
System.getProperty("user.dir")
获取工程根目录
通过 +/src/main/java
+ com.ya.boottest
(项目路径)+ .test1.autoCode
就可以把代码生成到test1功能下的autoCode文件夹中:
4. 从3.5.1升级到3.5.3.1
支持生成SpringDoc注解
支持SpringDoc,对使用了SpringDoc的SpringBoot3项目十分友好
在全局配置里配置 .enableSpringdoc()
文件覆盖写法改变
原来在全局配置里的允许文件覆盖被转移到策略配置里了:
5.源代码
package com.ya.boottest.util;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
* <p>created time:2023/4/25 19:34</p>
* <p>des:
* 代码生成器(新)
* </p>
*
* @author Ya Shi
*/
public class YaCodeGenerator {
/**
* 数据源配置
*/
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://localhost:3306/study", "root", "123456")
.dbQuery(new MySqlQuery());
/**
* 输出路径
*/
private static final String outputDir = System.getProperty("user.dir") + "/src/main/java";
public static void main(String[] args) {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
.globalConfig(builder -> {
builder.author("Ya Shi") // 设置作者
.enableSpringdoc()
// .enableSwagger() // 开启 swagger 模式
.outputDir(outputDir) // 指定输出目录
.disableOpenDir(); //禁止打开输出目录
})
.packageConfig(builder -> {
// builder.parent("com.ya.boottest.fruit.autoCode"); // 设置父包名
builder.parent("com.ya.boottest.test"); // 设置父包名
})
.strategyConfig(builder -> {
builder.addInclude("test111")
.controllerBuilder().enableFileOverride().enableRestStyle()
.serviceBuilder().enableFileOverride()
.entityBuilder().enableFileOverride()
.mapperBuilder().enableFileOverride(); // 设置需要生成的表名
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}