Mybatis-plus 代码生成器(改成自己配置既用)

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

}

执行结果

生成成功!

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈Demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值