环境准备
在开始使用 MyBatis-Plus 代码生成器前,确保开发环境具备 JDK、构建工具、数据库与可用的 IDE,以便顺利运行自动生成过程。此阶段的目标是搭建一个稳定的基础环境,避免后续因版本不兼容导致的失败。
第一步需要确认的要点包括:JDK 8 及以上版本、Maven 或 Gradle、以及一个可访问的 MySQL 数据库,这些要素将直接影响代码生成器的依赖管理和数据库连接。
代码生成器依赖与环境搭建
在项目中引入代码生成器相关的依赖,是实现自动化代码生成的关键步骤。我们通常将 mybatis-plus-generator、mysql-connector-java,以及模板引擎相关依赖放在构建工具的配置中,以便控制版本、提升构建稳定性。
下面给出一个常见的 Maven 依赖配置片段,帮助你快速集成到项目中;如果使用 Gradle,可以将等效依赖改写成 Groovy/Kotlin DSL 的写法。
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
此外,确保数据库驱动版本与 JDK 版本相匹配,以避免运行时的连接异常。你还可以在项目中添加一个简单的 README,用于记录本次生成器的版本约束、执行步骤与常见报错的排查方法。
自动代码生成核心配置
数据源配置
数据源配置是代码生成的第一步,需要提供数据库连接 URL、驱动、用户名与密码,以便生成器能够读取数据库的结构信息并映射成 Java 实体、Mapper、XML 等文件。
示例中,我们以 MySQL 为例,连接到 mp_demo 数据库,确保该库存在且具有可读权限;若你使用的是其它数据库,请调整 JDBC URL、驱动与参数。
全局与包名配置
全局配置包含输出目录、作者、日期策略等信息,包命名策略决定了生成代码的命名空间和包结构,通常设置为 moduleName、parent、entity、mapper、service、controller 等。
配置完成后,生成的代码会严格遵循这些包结构,使项目的模块化治理更加清晰,便于后续的扩展与维护。
策略与模板配置
策略配置用于指定命名规则、是否开启 Lombok、是否使用 REST 风格控制器、以及需要生成的表名单;命名策略 underline_to_camel 与表包含筛选是常用组合,可以直接映射数据库字段到 Java 字段。
模板配置允许你自定义输出模板,决定 XML、Controller、Service、Mapper 等文件的模板来源与输出路径;在某些场景下,你可以禁用某些模板(如 XML)以避免重复文件。
运行实战与校验
在核心配置准备就绪后,接下来进入实际的运行阶段。通过一个独立的 Java 程序作为入口类,调用 AutoGenerator 的执行方法,自动生成实体、DAO、Mapper、Service、Controller 等代码,大幅提升开发效率。
第一步编写一个 CodeGenerator 主类,包含全局配置、数据源、包配置、策略配置以及执行逻辑;随后通过 IDE 直接运行该类即可看到输出结果。
package com.example.generator;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class CodeGenerator {
public static void main(String[] args) {
// 1. 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("your-name");
gc.setOpen(false);
gc.setFileOverride(true);
gc.setDateType(DateType.ONLY_DATE);
// 2. 数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mp_demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
// 3. 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("sys");
pc.setParent("com.example");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
// 4. 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude("user","role","permission");
// 5. 整合配置
AutoGenerator mpg = new AutoGenerator();
mpg.setGlobalConfig(gc);
mpg.setDataSource(dsc);
mpg.setPackageInfo(pc);
mpg.setStrategy(strategy);
// 6. 执行
mpg.execute();
}
}
执行后可在输出目录看到包含实体、Mapper、XML、Service、Controller 等代码文件;请在运行前确保数据库连接可用且表结构正确,以免生成过程出现表信息缺失的情况。
常见问题与排错
数据源连接失败与权限异常
当遇到连接失败时,请首先检查 URL、驱动、用户名、密码是否正确,以及数据库是否允许来自当前机器的连接。另一个常见原因是 JDBC 驱动版本与 MySQL 版本不匹配,需要升级或降级驱动版本。
日志中通常会提示具体错误信息,如 “Communications link failure” 或 “Access denied for user”,这些都指向不同的排错方向;在排错时可逐项验证:网络连通性、账号权限、字符集设置以及时区配置是否影响连接。
生成代码为空或表未包含在 Include 列表中
若 Include 列表未覆盖数据库中的表名,生成结果可能为空,请确认 Include 字段是否正确,并且表名与实际数据库中的名称一致。
对于尚未存在的表,生成器不会自动创建,需要先在数据库中建表,或者调整 Include 参数以覆盖已有表。
模板冲突与路径问题
模板冲突通常发生在自定义模板与框架模板冲突时,这时可以通过 模板配置关闭某些实体的模板输出,以避免覆盖原有文件。
另外,输出目录的写权限也会影响生成过程,确保输出路径存在且当前用户具有写权限;避免输出到只读或受限目录。


