Skip to content

老版代码生成器已经足够好了,但是新版代码生成器使用建造者模式创建出来的,使得我们的代码更加规范化,老版代码生成器点击跳转,下面来看下我们是如何使用的吧。

添加下面两个依赖

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(","));
    }
}