一、相关依赖
1. 必要依赖
Mybatis-Plus 代码生成器的依赖如下:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
此外,下面几个依赖也是代码生成器所必须的:
mysql 驱动(生成器需要根据表中数据生成代码):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Mybatis-Plus 依赖(代码生成器版本号应与 Mybatis-Plus 保持一致):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
Velocity 引擎模板(生成器默认的引擎模板 ):
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
Lombok 依赖,用于简化开发,可不使用但依然推荐:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2. 可选择的依赖
生成器的某些配置需要依赖支持,如下
Swagger 依赖,对应生成器的开启 swagger 模式 需要的依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
Freemarker 依赖,另一种引擎模板(可以和 Velocity 任选其一):
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
二、快速生成
代码参考官网 https://baomidou.com/pages/779a6e/ 进行了修改
新建一个类与 main 函数,调用生成器的 api 即可,代码可以直接复制做简单的修改
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create(
"jdbc:mysql://localhost:3306/mp_db" // url
, "root" // username
, "123456" // password
)
.globalConfig(builder -> {
builder.author("Mzz") // 设置作者
// .enableSwagger() // 开启 swagger 模式
// .fileOverride() // 覆盖已生成文件 (已被弃用)
.outputDir("src\\main\\java\\"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.mzz") // 设置父包名
.moduleName("demo") // 设置父包模块名 (可以为空串 "")
.pathInfo(Collections.singletonMap(OutputFile.xml, "src\\main\\resources\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("tbl_user", "t_order") // 设置需要生成的表名
.addTablePrefix("tbl_", "t_") // 设置过滤表前缀
.entityBuilder()
.enableLombok(); // 启用 Lombok 注解简化开发
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
★ 最终输出路径为:输出目录 + 父包名 + 父模块名,输出的文件包含 controller, entity, mapper, service,以及 mapperXml 文件在指定的路径下
输出目录可以用相对路径,默认起始路径在项目文件夹下(pom.xml 同级)
如上面的代码中 src\\main\\java\\ 相对路径是可行的(注意要用 \\ 而不能用 / )
就相当于 System.getProperty(“user.dir”) + “src/main/java/”;
★ 如果你的项目是先建了空项目再添加的模块,那么起始路径会在项目文件夹下而不是模块下
★ 设置过滤表前缀后,生成的实体类名会根据表名去掉前缀
三、交互式生成
官网给出的样例配置并不全面,下面做了一些补充:
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create(
"jdbc:mysql://localhost:3306/mp_db" // url
, "root" // username
, "123456" // password
)
.globalConfig((scanner, builder) ->
builder.author(scanner.apply("请输入作者名称?"))
.outputDir("src\\main\\java") // 输出目录
// .enableSwagger() // 开启 swagger 模式
// .fileOverride() // 覆盖已生成文件(已被弃用)
)
// 包配置
.packageConfig((scanner, builder) ->
builder.parent(scanner.apply("请输入父包名?"))
)
// 策略配置
.strategyConfig((scanner, builder) ->
builder.addInclude(
getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"))
)
.addTablePrefix("tbl_", "t_") // 设置过滤表前缀
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder()
.enableLombok() // 启用 Lombok 注解简化开发
.addTableFills(
new Column("create_time", FieldFill.INSERT)
).build()
)
//模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
// .templateEngine(new BeetlTemplateEngine())
// .templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理输入 all 的情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
这里并没有设置父模块名,最终代码文件生成在 输出目录+父包名 下
mapperXML 文件生成在 mapper 包下 xml 包中