Mybatis PLUS代码生成器generate
- 一、2.3版本
- 二、生成代码
- 三、3.5.1版本
- 四、生成代码
一、2.3版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>2.3</version>
</dependency>
二、生成代码
Generate.java
package com;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class Generate {
public static void main(String[] args) {
generate();
}
public static void generate(){
AutoGenerator autoGenerator = new AutoGenerator();
GlobalConfig globalConfig = new GlobalConfig();
//作者
globalConfig.setAuthor("张三");
globalConfig.setActiveRecord(true);
globalConfig.setBaseColumnList(true);
globalConfig.setBaseResultMap(true);
globalConfig.setEnableCache(false);
//文件生成路径
globalConfig.setOutputDir("D:\\generate");
globalConfig.setIdType(IdType.AUTO);
autoGenerator.setGlobalConfig(globalConfig);
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/my?serverTimezone=GMT%2B8&useSSL=false");
autoGenerator.setDataSource(dataSourceConfig);
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(true);
strategyConfig.setDbColumnUnderline(true);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//泛指前缀下的所有表
strategyConfig.setTablePrefix("t_");
//指定具体表
strategyConfig.setInclude("t_org", "t_user");
autoGenerator.setStrategy(strategyConfig);
//包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.my");
packageConfig.setController("controller");
packageConfig.setMapper("mapper");
packageConfig.setService("service");
packageConfig.setEntity("entity");
autoGenerator.setPackageInfo(packageConfig);
//生成代码
autoGenerator.execute();
}
}
三、3.5.1版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
四、生成代码
Generate.java
package com;
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 java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Generate {
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:\generate
private static final String projectRootPath = "D:\\generate";
// 父包名。用于生成的java文件的import。替换为系统的包名
private static final String parentPackageName = "com.my";
/**
* 执行此处
*/
public static void main(String[] args) {
generate();
}
protected static void generate() {
// 包路径
String packagePath = projectRootPath + "\\code";
// 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(MyEntity.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();
}
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
OK,就这些吧。
有什么不对的还望指正,书写不易,觉得有帮助就点个赞吧!☺☺☺
参考链接:
https://zhuanlan.zhihu.com/p/686967462