7.MP代码生成
目的
咱们在代码中要生成与数据库对应的实体类和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.生成代码目录结构

这里可能不是你想要的最终结果。需要修改模板、代码等才能满足项目的定制化需求。
idea插件方式
1.在idea中安装MyBatisX,如下图:

2.在idea的Database中创建数据库链接
这个创建步骤也非常简单,这里不再阐述

3.用mybatisx逆向生成代码
右键选中我们要生成代码的表,选MybatisX-Generator

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

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

主要设置字段说明:
字段 | 说明 |
---|---|
annotation | 注解方式。因为我们用MP所以这里固定选择Mybatis-Plus3方式。 |
options | 生成的组件选项。一般选Lombok即可 |
template | 生成模板选择。这里我们选择Mybatis-Plus3 |
点击完成后,便给我们生成了响应的代码。
4.mybatisx修改模板
我们在上面选择的mybatis-plus3模板,它的位置在:

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

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

保存修改,从新再次生成代码后,就不会在resources下创建mapper目录和对应的xml文件了。
5.常用模板修改
-
去掉mpper.xml的生成。上面已经介绍过
-
把Mapper接口类生成到dao目录下
同样修改.meta.xml内容如下:
-
修改作者、描述
修改mapperInterface.ftl模板内容
推荐指数:
真诚点赞 诚不我欺~