Appearance
老版代码生成器已经足够好了,但是新版代码生成器使用建造者模式创建出来的,使得我们的代码更加规范化,老版代码生成器点击跳转,下面来看下我们是如何使用的吧。
添加下面两个依赖
xml
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
核心代码书写
java
package generator;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.fill.Column;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class CodeGenerator {
/**
* 生成的代码放到哪个工程中
*/
public static final String PROJECT_NAME = "xk857-core";
/**
* 数据库名称
*/
public static final String DATABASE_NAME = "qq-card";
/**
* 父包名
*/
public static final String PARENT_MODULE_NAME = "com.xk857";
/**
* 子包名
*/
public static final String MODULE_NAME = "module.admin";
/**
* 去掉表前缀
*/
public static final String[] REMOVE_TABLE_PREFIX = {"tb_","sys"};
/**
* ip地址
*/
public static final String MY_IP = "localhost";
/**
* 端口号
*/
public static final String MY_PORT = "3306";
/**
* 账号
*/
public static final String MY_USERNAME = "root";
/**
* 密码
*/
public static final String MY_PASSWORD = "root";
/**
* 作者名称
*/
private static final String author = "cv大魔王";
public static void main(String[] args) {
String url = "jdbc:mysql://"+MY_IP+":"+MY_PORT+"/"+ DATABASE_NAME +"?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
String projectPath = System.getProperty("user.dir") + "/";
FastAutoGenerator.create(url,MY_USERNAME,MY_PASSWORD)
// 全局配置
.globalConfig(( builder) -> builder.author("c").enableSwagger().outputDir(projectPath+ PROJECT_NAME +"/src/main/java"))
// 包配置
.packageConfig((builder) -> builder.parent(PARENT_MODULE_NAME).moduleName(MODULE_NAME))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.addTablePrefix(REMOVE_TABLE_PREFIX)
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok().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(","));
}
}