配置pom.xml
<!-- 代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!--freemark模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
代码如下所示
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.mixcloud.common.base.BaseNewEntity;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MpGenerator {
/**
* <p>
* 代码生成器(快速版本)
* </p>
*
* @author Demo
*/
public static class FastCodeGenerator {
// 基础信息配置
// 数据库连接字符
private static final String URL = "jdbc:mysql://localhost:3306/?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true";
// 数据库用户名
private static final String USERNAME = "root";
// 数据库密码
private static final String PASSWORD = "root";
// 项目根路径。生成结果如:D:\MyProject\spring-boot
private static final String projectRootPath = System.getProperty("user.dir");
// 项目根路径(测试用,非通用)(此句是本项目测试用的。实际项目中,包括多模块项目,请注释掉此句,使用上句)
// private static final String projectRootPath = System.getProperty("user.dir") + "/study-mybatis-plus-fast-generator";
// 父包名。用于生成的java文件的import。
// private static final String parentPackageName = "com.cxhit.mybatisplus.generator";
private static final String parentPackageName = "替换为你想生成的包名";
/**
* 执行此处
*/
public static void main(String[] args) {
// 简单示例,适用于单模块项目
simpleGenerator();
// 完整示例,适用于多模块项目
// completeGenerator();
}
/**
* 【单模块】简单的实现方案
*/
protected static void simpleGenerator() {
System.out.println(projectRootPath);
// 包路径
String packagePath = projectRootPath + "包路径";
// XML文件的路径
String mapperXmlPath = projectRootPath + "xml文件路径"
// 开始执行代码生成
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
// 1. 全局配置
.globalConfig(builder -> builder
// 作者名称
.author("Demo")
// 开启覆盖已生成的文件。注释掉则关闭覆盖。
// .fileOverride()
// 禁止打开输出目录。注释掉则生成完毕后,自动打开生成的文件目录。
.disableOpenDir()
// 指定输出目录。如果指定,Windows生成至D盘根目录下,Linux or MAC 生成至 /tmp 目录下。
.outputDir(packagePath)
// 开启swagger2.注释掉则默认关闭。
.enableSwagger()
// 指定时间策略。
.dateType(DateType.TIME_PACK)
// 注释时间策略。
.commentDate("yyyy-MM-dd")
)
// 2. 包配置
.packageConfig((scanner, builder) -> builder
// 设置父表名
.parent(parentPackageName)
.moduleName(scanner.apply("请输入模块名:"))
// mapper.xml 文件的路径。单模块下,其他文件路径默认即可。
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlPath))
)
// 3. 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?生成所有表,请输入[all]:")))
// 阶段1:Entity实体类策略配置
.entityBuilder()
.superClass(BaseNewEntity.class) //改为自己封装的实体对应的固定项
.addIgnoreColumns("created_at","created_by","updated_at","updated_by","deleted")
// 开启生成实体时生成字段注解。
// 会在实体类的属性前,添加[@TableField("nickname")]
.enableTableFieldAnnotation()
// 阶段2:Mapper策略配置
.mapperBuilder()
// 开启 @Mapper 注解。
// 会在mapper接口上添加注解[@Mapper]
.enableMapperAnnotation()
// 启用 BaseResultMap 生成。
// 会在mapper.xml文件生成[通用查询映射结果]配置。
.enableBaseResultMap()
// 启用 BaseColumnList。
// 会在mapper.xml文件生成[通用查询结果列 ]配置
.enableBaseColumnList()
// 阶段4:Controller策略配置
.controllerBuilder()
// 会在控制类中加[@RestController]注解。
.enableRestStyle()
// 开启驼峰转连字符
.enableHyphenStyle()
.build()
)
// 4. 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
//.templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
// 5. 执行
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
}
执行结果
生成成功!