【超好用】自定义的mybatis-plus代码生成器

31 篇文章 2 订阅
12 篇文章 1 订阅

BACKGROUND

  • 你是否也有这样的烦恼:

  • 每次写代码都需要创建很多包很多层很多类很多接口?

  • 耗时且费力姑且不谈,有时可能还大意了没有闪,搞出一堆bug

  • 这谁顶得住啊

都3202年了,让程序自力更生吧!!

教程 lesson

| 准备 prepare

  • 添加依赖

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.32</version>
        </dependency>
  • 复制如下文件内容

  • (本人定制,功能已经可以满足日常开发~更多可查阅官方文档)

package com.benjamin.demo.utils;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class MyBatisPlusAuto {

    public static void main(String[] args) {

        //如果在空项目下创建模块项目,需要制定模块的名称,否则设置为空
//===============================================================================================
        String moduleName = "";     //  单体项目
//        String moduleName = "Wish-Cloud-master/wish-modules/wish-contract";     //  多模块项目示例
        String projectPath = System.getProperty("user.dir");
//===============================================================================================
        String databaseName = "20230212_new_test";
        FastAutoGenerator.create(
//===============================================================================================
                        "jdbc:mysql://127.0.0.1:3306/" + databaseName + "?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai",
                        "yourusername", "yourpassword")
                // 全局配置
                .globalConfig(
                        (scanner, builder) ->
                                builder
                                        .outputDir(projectPath + "/" + moduleName + "/src/main/java")
                                        .author(scanner.apply("请输入作者名称:")).fileOverride()
//                                        .enableSwagger()    //  开启 swagger 模式
                )
                // 包配置
                .packageConfig((scanner, builder) -> builder
//===============================================================================================
                                .parent("com.wish")                         //  父包名
                                .moduleName(scanner.apply("请输入包名:"))  //  父包模块名
                                .pathInfo(Collections.singletonMap(
                                        OutputFile.xml,                     //曾经是mapperXml
                                        projectPath + "/" + moduleName
                                                + "/src/main/resources/mappers/"))
                )
                // 策略配置
                .strategyConfig((scanner, builder) -> builder
                        .addInclude(getTables(scanner.apply("请输入表名,2个及以上请使用英文逗号分隔(ps:所有表,输入 all):")))
//===============================================================================================
//                        .addTablePrefix("t_")       //  过滤表前缀
                        .controllerBuilder()        //  生成@RestController控制器
                        .enableRestStyle()
                        .enableHyphenStyle()        //  开启Controller驼峰转连字符
                        .entityBuilder()
                        .enableLombok()             //  实体是否为lombok模型
                        .naming(NamingStrategy.underline_to_camel)          //  数据库表字段映射到实体类的命名策略
                        .columnNaming(NamingStrategy.underline_to_camel)    //  数据库表字段映射到实体类字段的命名策略
//===============================================================================================
//                        .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(","));
    }

}
  • 文件中请重点关注出现 “//============================================...” 的地方,是你运行前可能需要修改的位置。

  • 至于如何修改以及各部分什么含义,注释已经非常清晰了,这里不再重复描述。

| 运行 run

  • 点击运行后控制台会有相应提示

  • 依次输入你想要的值并回车

  • 生成成功!!

  • mac和windows都会弹出文件夹的

  • 同样我们回到项目中check,通过上图可以看到

  • everything is ok

  • 是不是巴适得板?

  • 那么我们再随便check一个文件的内容

  • 该有的它都有,剩下就需要我们根据需求再添砖加瓦了~

END


Thanks!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hah杨大仙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值