欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot之【mybatisplus】代码生成器

程序员文章站 2022-06-11 16:54:38
1、概述、 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 2、使用教程 2.1 相关依赖 MyB ......

1、概述、

autogenerator 是 mybatis-plus 的代码生成器,通过 autogenerator 可以快速生成 entity、mapper、mapper xml、service、controller 等各个模块的代码,极大的提升了开发效率。

2、使用教程

2.1 相关依赖

mybatis-plus 支持 velocity(默认)、freemarker、beetl,,可以采用自定义模板引擎。

        <!--代码生成器 依赖-->
        <dependency>
            <groupid>com.baomidou</groupid>
            <artifactid>mybatis-plus-generator</artifactid>
            <version>3.3.0</version>
        </dependency>
        <!--模板引擎 依赖-->
        <dependency>
            <groupid>org.freemarker</groupid>
            <artifactid>freemarker</artifactid>
            <version>2.3.28</version>
        </dependency>

 

2.2 编写配置

2.2.1 下载模板文件

模板地址:

下载方法:一个下载github文件夹的网站,作者来自孟加拉国

解压文件到resource目录下

2.2.2 代码生成类编写

 /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    public static string scanner(string tip) {
        scanner scanner = new scanner(system.in);
        stringbuilder help = new stringbuilder();
        help.append("请输入" + tip + ":");
        system.out.println(help.tostring());
        if (scanner.hasnext()) {
            string ipt = scanner.next();
            if (stringutils.isnotempty(ipt)) {
                return ipt;
            }
        }
        throw new mybatisplusexception("请输入正确的" + tip + "!");
    }

    public static void main(string[] args) {
        // 代码生成器
        autogenerator mpg = new autogenerator();

        // 全局配置
        globalconfig gc = new globalconfig();
        final string projectpath = system.getproperty("user.dir");
        gc.setoutputdir(projectpath + "/mybatisplusdemo/src/main/java");
        gc.setauthor("jobob");
        gc.setopen(false);
        gc.setidtype(idtype.auto);
        // gc.setswagger2(true); 实体属性 swagger2 注解
        gc.setfileoverride(true); //设置是否覆盖原来的代码  最好设置为false  或者 另外配置路径
        mpg.setglobalconfig(gc);


        // 数据源配置
        datasourceconfig dsc = new datasourceconfig();
        dsc.seturl("jdbc:mysql://localhost:3306/test?useunicode=true&usessl=false&characterencoding=utf8&servertimezone=utc");
        // dsc.setschemaname("public");
        dsc.setdrivername("com.mysql.jdbc.driver");
        dsc.setusername("root");
        dsc.setpassword("root");

        mpg.setdatasource(dsc);

        // 包配置
        final packageconfig pc = new packageconfig();
        //pc.setmodulename(scanner("模块名"));
        pc.setparent("com.example.mybatisplusdemo");
        mpg.setpackageinfo(pc);

        // 自定义配置
        injectionconfig cfg = new injectionconfig() {
            @override
            public void initmap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 freemarker
        string templatepath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        // string templatepath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        list<fileoutconfig> foclist = new arraylist<>();
        // 自定义配置会被优先输出
        foclist.add(new fileoutconfig(templatepath) {
            @override
            public string outputfile(tableinfo tableinfo) {
                // 自定义输出文件名 , 如果你 entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectpath + "/mybatisplusdemo/src/main/resources/mapper/"
                         + tableinfo.getentityname() + "mapper" + stringpool.dot_xml;
            }
        });
        /*
        cfg.setfilecreate(new ifilecreate() {
            @override
            public boolean iscreate(configbuilder configbuilder, filetype filetype, string filepath) {
                // 判断自定义文件夹是否需要创建
                checkdir("调用默认方法创建的目录");
                return false;
            }
        });
        */
        cfg.setfileoutconfiglist(foclist);
        mpg.setcfg(cfg);

        // 配置模板
        //templateconfig templateconfig = new templateconfig();

        // 配置自定义输出模板
        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
        // templateconfig.setentity("templates/entity2.java");
        // templateconfig.setservice();
        // templateconfig.setcontroller();

        //templateconfig.setxml("templates/mapper.java");
        //mpg.settemplate(templateconfig);

        // 策略配置

        strategyconfig strategy = new strategyconfig();
        // 表名生成策略(下划线转驼峰命名)
        strategy.setnaming(namingstrategy.underline_to_camel);
        // 列名生成策略(下划线转驼峰命名)
        strategy.setcolumnnaming(namingstrategy.underline_to_camel);
        // 自定义实体父类
        //strategy.setsuperentityclass("com.baomidou.ant.common.baseentity");
        // 是否启动lombok配置
        strategy.setentitylombokmodel(true);
        // 是否启动rest风格配置
        strategy.setrestcontrollerstyle(true);
        strategy.setinclude(scanner("表名,多个英文逗号分割").split(","));
        // 写于父类中的公共字段   父类没有id就注释掉,否则实体类不生成 id属性
        //strategy.setsuperentitycolumns("id");
        strategy.setcontrollermappinghyphenstyle(true);
        strategy.settableprefix(pc.getmodulename() + "_");
        mpg.setstrategy(strategy);
        mpg.settemplateengine(new freemarkertemplateengine());
        mpg.execute();
    }

 

2.2.3 代码生成类启动

SpringBoot之【mybatisplus】代码生成器

目录结构

SpringBoot之【mybatisplus】代码生成器

————————————————

本人免费整理了java高级资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo高并发分布式等教程,一共30g,需要自己领取。
传送门:https://mp.weixin.qq.com/s/osb-bol6w-zltstttkqmpq