目的

咱们在代码中要生成与数据库对应的实体类和mapper,甚至是服务相关的接口和实现类。MP支持这些代码的自动生成。

MP提供两种生成代码的方式:

  • 代码生成器
  • idea插件方式

代码生成器

1.加入依赖

<!-- MP代码生成器最新版本 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.3</version>
</dependency>
<!-- freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

2.生成代码

public class MpGeneratorTest {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://youip:3306/yourdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true",
                        "root",
                        "123456")
                .globalConfig(builder -> {
                    builder.author("老马") // 设置作者
                            .outputDir("/Users/mayuanfei/Desktop/mpgen"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.mayuanfei") // 设置父包名
                            .moduleName("mpdemo") // 设置父包模块名
                           ;
                })
                .strategyConfig(builder -> {
                    builder.addInclude("lm_user") // 设置需要生成的表名
                            .addTablePrefix("t_", "lm_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

3.生成代码目录结构

image-20220729141939528

这里可能不是你想要的最终结果。需要修改模板、代码等才能满足项目的定制化需求。

可以参考教学视频:https://www.bilibili.com/video/BV1db4y1a7ew?spm_id_from=333.999.0.0&vd_source=f0aa512994ca504b7ad75b81d5661220

idea插件方式

1.在idea中安装MyBatisX,如下图:

image-20220729142047289

2.在idea的Database中创建数据库链接

这个创建步骤也非常简单,这里不再阐述

image-20220729142134642

3.用mybatisx逆向生成代码

右键选中我们要生成代码的表,选MybatisX-Generator

image-20220729142223377

会弹出生成的操作选择页面,如下图:

image-20220729143012323

主要设置字段说明:

字段说明
module path项目路径
base package基础包,所有生成的代码都会放在这个基础包下
superClass生成的实体类的父类。比如可以加BaseEntity为父类。
base path生成路径。一般不修改
relative package实体类所放置的包名称。

点击next会进入下一个设置的页面

image-20220729143100125

主要设置字段说明:

字段说明
annotation注解方式。因为我们用MP所以这里固定选择Mybatis-Plus3方式。
options生成的组件选项。一般选Lombok即可
template生成模板选择。这里我们选择Mybatis-Plus3

点击完成后,便给我们生成了响应的代码。

4.mybatisx修改模板

我们在上面选择的mybatis-plus3模板,它的位置在:

image-20220729143209005

我们可以修改对应的内容来满足我们项目的实际要求。比如:我们项目中不太想生成mybatis的xml文件。

image-20220729143239864

我们就可以修改.meta.xml文件内容,去掉模板生成那块的模板信息配置。

image-20220729143313945

保存修改,从新再次生成代码后,就不会在resources下创建mapper目录和对应的xml文件了。

5.常用模板修改

  • 去掉mpper.xml的生成。上面已经介绍过

  • 把Mapper接口类生成到dao目录下

    同样修改.meta.xml内容如下:

    image-20220729143409670
  • 修改作者、描述

    修改mapperInterface.ftl模板内容

    image-20220729143452869