以下是使用 MyBatis-Plus Generator 3.5.7 版本的通用代码生成器示例。通过这个例子,你将能够根据数据库表自动生成相应的实体类、Mapper 接口、Mapper XML 文件、Service 和 Controller 等代码。
准备工作
添加依赖
确保在你的 Spring Boot 项目的
pom.xml
文件中包含 MyBatis-Plus Generator 的依赖:<dependencies> <!-- MyBatis-Plus 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.7</version> </dependency> <!-- MyBatis-Plus Generator 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.7</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency> <!-- MySQL 连接依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> </dependencies>
配置
application.yml
或application.properties
配置你的数据库连接信息,例如:
spring: datasource: url: jdbc:mysql://localhost:3306/yourdatabase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: yourusername password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver
代码生成器示例
下面是一个完整的代码生成器示例,可以在项目中创建一个单独的类文件(例如 CodeGenerator.java
),运行该类来生成代码。
package com.example.codegen;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
public class CodeGenerator {
public static void main(String[] args) {
// 数据源配置
DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig
.Builder("jdbc:mysql://localhost:3306/yourdatabase", "yourusername", "yourpassword")
.dbQuery(new MySqlQuery())
.schema("yourdatabase")
.typeConvert((globalConfig, fieldType) -> {
String type = fieldType.toLowerCase();
if (type.contains("tinyint")) {
return DbColumnType.INTEGER;
}
return null;
});
FastAutoGenerator.create(dataSourceConfig)
// 全局配置
.globalConfig(builder -> {
builder.author("yourname") // 设置作者名
.outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定输出目录
.fileOverride() // 覆盖已生成文件
.disableOpenDir(); // 禁止打开输出目录
})
// 包配置
.packageConfig(builder -> {
builder.parent("com.example") // 设置父包名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 设置Mapper XML生成路径
})
// 策略配置
.strategyConfig(builder -> {
builder.addInclude("your_table_name") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
// 实体策略配置
builder.entityBuilder().enableLombok().enableTableFieldAnnotation();
// Mapper 策略配置
builder.mapperBuilder().enableBaseColumnList().enableBaseResultMap();
// Service 策略配置
builder.serviceBuilder();
// Controller 策略配置
builder.controllerBuilder();
})
// 使用Freemarker引擎模板,默认的是Velocity引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
代码解释
DataSourceConfig:配置数据源的信息,包括数据库 URL、用户名和密码。这里使用 MySQL 数据库作为示例。
FastAutoGenerator.create:创建代码生成器,传入数据源配置。
全局配置(GlobalConfig):
- 设置作者名。
- 指定生成文件的输出目录。这里使用相对路径
${user.dir}
,指向项目的根目录。 - 覆盖已生成文件(
fileOverride
)。 - 禁止生成完毕后自动打开输出目录(
disableOpenDir
)。
包配置(PackageConfig):
- 设置父包名。生成的代码将位于该包下(如:
com.example
)。 - 设置 Mapper XML 文件的生成路径。
- 设置父包名。生成的代码将位于该包下(如:
策略配置(StrategyConfig):
- 设置需要生成的表名,支持多表生成。
- 设置过滤表前缀。生成时将移除指定的表前缀。
- 配置实体类策略:启用 Lombok 注解,启用字段注解。
- 配置 Mapper 策略:启用基础列名列表和结果集映射。
- 配置 Service 策略:默认配置。
- 配置 Controller 策略:默认配置。
模板引擎:
- 使用 Freemarker 模板引擎生成代码。默认是使用 Velocity 模板引擎。
运行代码生成器
- 在 IDE 中运行
CodeGenerator
类。在控制台确认是否有生成成功的信息。 - 生成的代码文件将会出现在指定的输出目录中(如:
src/main/java/com/example
)。
生成文件示例
运行完成后,你将在项目的 src/main/java
目录下看到生成的代码文件:
- 实体类:位于
com.example.entity
包下。 - Mapper 接口:位于
com.example.mapper
包下。 - XML 映射文件:位于
src/main/resources/mapper
目录下。 - Service 接口和实现:位于
com.example.service
和com.example.service.impl
包下。 - Controller 类:位于
com.example.controller
包下。
总结
通过上述代码示例,你可以快速生成基于 MyBatis-Plus 的基础代码,并根据自己的需要进行进一步开发。MyBatis-Plus Generator 通过配置化的方式极大地方便了代码的生成工作,提高了开发效率。根据实际项目需求,你可以进一步调整配置,以适应不同项目的需求。