BACKGROUND
你是否也有这样的烦恼:
每次写代码都需要创建很多包很多层很多类很多接口?
耗时且费力姑且不谈,有时可能还大意了没有闪,搞出一堆bug
这谁顶得住啊
都3202年了,让程序自力更生吧!!
教程 lesson
| 准备 prepare
添加依赖
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
复制如下文件内容
(本人定制,功能已经可以满足日常开发~更多可查阅官方文档)
package com.benjamin.demo.utils;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MyBatisPlusAuto {
public static void main(String[] args) {
//如果在空项目下创建模块项目,需要制定模块的名称,否则设置为空
//===============================================================================================
String moduleName = ""; // 单体项目
// String moduleName = "Wish-Cloud-master/wish-modules/wish-contract"; // 多模块项目示例
String projectPath = System.getProperty("user.dir");
//===============================================================================================
String databaseName = "20230212_new_test";
FastAutoGenerator.create(
//===============================================================================================
"jdbc:mysql://127.0.0.1:3306/" + databaseName + "?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai",
"yourusername", "yourpassword")
// 全局配置
.globalConfig(
(scanner, builder) ->
builder
.outputDir(projectPath + "/" + moduleName + "/src/main/java")
.author(scanner.apply("请输入作者名称:")).fileOverride()
// .enableSwagger() // 开启 swagger 模式
)
// 包配置
.packageConfig((scanner, builder) -> builder
//===============================================================================================
.parent("com.wish") // 父包名
.moduleName(scanner.apply("请输入包名:")) // 父包模块名
.pathInfo(Collections.singletonMap(
OutputFile.xml, //曾经是mapperXml
projectPath + "/" + moduleName
+ "/src/main/resources/mappers/"))
)
// 策略配置
.strategyConfig((scanner, builder) -> builder
.addInclude(getTables(scanner.apply("请输入表名,2个及以上请使用英文逗号分隔(ps:所有表,输入 all):")))
//===============================================================================================
// .addTablePrefix("t_") // 过滤表前缀
.controllerBuilder() // 生成@RestController控制器
.enableRestStyle()
.enableHyphenStyle() // 开启Controller驼峰转连字符
.entityBuilder()
.enableLombok() // 实体是否为lombok模型
.naming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体类的命名策略
.columnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体类字段的命名策略
//===============================================================================================
// .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(","));
}
}
文件中请重点关注出现 “//============================================...” 的地方,是你运行前可能需要修改的位置。
至于如何修改以及各部分什么含义,注释已经非常清晰了,这里不再重复描述。
| 运行 run
点击运行后控制台会有相应提示
依次输入你想要的值并回车
生成成功!!
mac和windows都会弹出文件夹的
同样我们回到项目中check,通过上图可以看到
everything is ok
是不是巴适得板?
那么我们再随便check一个文件的内容
该有的它都有,剩下就需要我们根据需求再添砖加瓦了~
END
Thanks!