Mybatis-Plus代码生成器的使用

本文介绍了如何在Mybatis-Plus项目中使用FastAutoGenerator进行代码自动生成,包括添加依赖、配置模板引擎、设置生成路径和表名策略。同时提供了简化配置的封装方法,以及生成代码在IntelliJIDEA中的应用示例。
摘要由CSDN通过智能技术生成

Mybatis-Plus

1、代码生成器(新)

导入相关依赖。

依赖:

<!--    mybatis-plus 生成器    -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
</dependency>

模板引擎:

<!--   模板引擎(不单独引入会报错:找不到该引擎)  --> 
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>
​
<!--  Velocity 引擎   --> 
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>

版本 3.5.1 以后。将以下代码放入可执行类中。

FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai", "xiaosun", "123456")
                .globalConfig(builder -> {
                    builder.author("changzhi") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .outputDir("D:\\W_Disk\\learn_workspace\\spring-boot-starter-master\\mybatis-spring-boot-samples\\mybatis-plus-boot\\src\\main\\java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.changzhi") // 设置父包名
                            .moduleName("mybatisplus") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\W_Disk\\learn_workspace\\spring-boot-starter-master\\mybatis-spring-boot-samples\\mybatis-plus-boot\\src\\main\\resources\\mybatis\\mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("blog") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();

2、生成代码部分优化

由于官方给我们的样例生成代码比较简洁,需要我们根据实际情况手动修改相关参数,因此,我对其做了简单封装,以达到使用少量且容易的参数配置,来快速生成文件。

Note:

  • 该场景以本人常用的 Intellij IDEA 常见目录结构为目标,生成相关文件。

  • 请将该类放在与 SpringBoot 启动类同级目录下。

  • 执行该类,将会在boot 启动类所在目录下生成 entity、mapper、controller、service包及文件;xml 映射文件生成在 resource/mybatis/mapper 下。

完整类代码如下:

package com.changzhi.mybatisplus;
​
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
​
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
​
public class MybatisPlusGeneratorUtil {
    // 数据源
    private final static String url = "jdbc:mysql://localhost:3306/mybatis?useSSL=false&charactorEncode=UTF-8&serverTimezone=Asia/Shanghai";
    private final static String username = "xiaosun";
    private final static String password = "123456";
​
    public static void main(String[] args) {
//        mybatisPlusGenerator();
​
        mybatisPlusGeneratorByReaction();
    }
​
    /**
     * mybatisplus generator(快速自动生成)
     */
    public static void mybatisPlusGenerator() {
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("changZhi") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .outputDir(getOutputDir()); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder
                            .parent(getParentPackage()) // 设置父包名
//                            .moduleName("") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, getMapperXmlPath())); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("blog"); // 设置需要生成的表名
//                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
​
    /**
     * 交互式生成
     */
    public static void mybatisPlusGeneratorByReaction(){
        FastAutoGenerator.create(url, username, password)
                // 全局配置
                .globalConfig((scanner, builder) -> {
                    builder.author(scanner.apply("请输入作者名称?"))
                            .outputDir(getOutputDir());
                })
                // 包配置
                .packageConfig(builder -> {
                    builder.parent(getParentPackage())
                            .pathInfo(Collections.singletonMap(OutputFile.xml, getMapperXmlPath()));
                })
                // 策略配置
                .strategyConfig(builder -> {
                    Scanner scanner = new Scanner(System.in);
                    List<String> tables = new ArrayList<>();
                    System.out.println("请输入表名, 一行表示一个,以 “end“ 表示结束!");
                    while (scanner.hasNextLine()){
                        String str = scanner.nextLine();
                        if (str.equals("end")){
                            break;
                        }
                        tables.add(str);
                    }
                    builder.addInclude(tables);
                })
                .templateEngine(new FreemarkerTemplateEngine())
                /*
                    模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker 或 Enjoy
                   .templateEngine(new BeetlTemplateEngine())
                   .templateEngine(new EnjoyTemplateEngine())
                 */
                .execute();
    }
​
    /**
     * 获取 xml 映射文件存放目录( resources/mybatis/mapper )
     * @return
     */
    public static String getMapperXmlPath(){
        return System.getProperty("user.dir") + "\\src\\main\\resources\\mybatis\\mapper";
    }
​
    /**
     * 获取 main/java 目录
     * @return
     */
    public static String getOutputDir(){
        return System.getProperty("user.dir") + "\\src\\main\\java";
    }
​
    /**
     * 获取执行类的包目录
     * @return
     */
    public static String getParentPackage(){
        return MybatisPlusGeneratorUtil.class.getPackage().getName();
    }
}
​希望以上分享能够帮助到各位友友,不要忘记点个赞鼓励一下哦!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值