【超好用】自定义的mybatis-plus代码生成器
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, //曾经是mapperXmlprojectPath + "/" + 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!