广告

MyBatis-Plus代码生成器配置教程:从环境准备到自动生成完整代码的实战指南

环境准备

在开始使用 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 参数以覆盖已有表。

模板冲突与路径问题

模板冲突通常发生在自定义模板与框架模板冲突时,这时可以通过 模板配置关闭某些实体的模板输出,以避免覆盖原有文件。

另外,输出目录的写权限也会影响生成过程,确保输出路径存在且当前用户具有写权限;避免输出到只读或受限目录。

广告

后端开发标签