MyBatis-Plus (MP) 作为 MyBatis 的强大增强工具,提供了许多实用的功能来简化开发,其中代码生成器 (AutoGenerator) 是一个能够显著提升开发效率的利器。它可以通过读取数据库表结构,一键自动生成对应的 Entity、Mapper、Service、Controller 等模板代码,让我们能更专注于业务逻辑的实现。
本文将详细介绍如何在 Spring Boot 项目中配置并使用 MyBatis-Plus 代码生成器。
第一步:添加 Maven 依赖
首先,我们需要在项目的 pom.xml 文件中引入代码生成器所需的核心依赖。
<!-- SpringBoot 整合 Mybatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!-- 代码生成器核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!--
代码生成器默认采用 Velocity 作为模板引擎,
此处我们引入 Velocity 引擎的依赖
-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<!-- MySQL JDBC 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>第二步:编写并执行生成器代码
依赖添加完成后,我们只需创建一个包含 main 方法的 Java 类来配置和执行代码生成逻辑。通常,建议将这个类放在 src/test/java 目录下,因为它仅用于开发阶段,无需打包到最终的应用程序中。
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class CodeGenerator {
public static void main(String[] args) {
// 1. 创建代码生成器对象
AutoGenerator autoGenerator = new AutoGenerator();
// 2. 配置数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL); // 设置数据库类型
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/report?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("YOUR_PASSWORD_HERE"); // 替换为你的数据库密码
autoGenerator.setDataSource(dataSourceConfig);
// 3. 全局配置
GlobalConfig globalConfig = new GlobalConfig();
// 设置代码输出目录(建议使用绝对路径)
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("Heaven"); // 设置作者名称
globalConfig.setOpen(false); // 生成后是否打开资源管理器
// globalConfig.setServiceName("%sService"); // 自定义 Service 接口名,%s 会自动替换为表名
autoGenerator.setGlobalConfig(globalConfig);
// 4. 包名配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.heaven.demo01"); // 设置父包名
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setMapper("mapper");
packageConfig.setEntity("pojo"); // 实体类包名,默认为 entity
autoGenerator.setPackageInfo(packageConfig);
// 5. 核心策略配置
StrategyConfig strategyConfig = new StrategyConfig();
// strategyConfig.setInclude("user", "product"); // 设置需要生成的表名,可变参数
strategyConfig.setEntityLombokModel(true); // 自动添加 @Lombok 注解
strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 数据库表名映射到实体的命名策略(下划线转驼峰)
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略
// strategyConfig.setTablePrefix("tbl_"); // 设置表前缀,生成实体时会自动去除
autoGenerator.setStrategy(strategyConfig);
// 6. 执行生成
autoGenerator.execute();
}
}配置说明:
DataSourceConfig: 用于配置数据库连接信息,代码生成器会连接此数据库以获取表结构。GlobalConfig: 全局性配置,如代码的输出路径、作者信息、是否覆盖已有文件等。PackageConfig: 用于定义生成代码的包结构,例如Controller、Service、Mapper等分别存放在哪个包下。StrategyConfig: 这是最核心的配置,用于设定代码生成的策略,例如:- 指定要为哪些表生成代码 (
setInclude)。 - 是否使用 Lombok 简化实体类 (
setEntityLombokModel)。 - 数据库表名和字段名到实体类属性名的命名转换策略 (
setNaming和setColumnNaming)。
- 指定要为哪些表生成代码 (
配置完成后,直接运行这个 main 方法,MyBatis-Plus 就会根据你的设置,在指定目录下生成所有需要的代码文件。