MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明

MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明

MyBatis Generator(MBG)的generatorConfig.xml是代码生成的核心配置文件,遵循 MyBatis 官方 DTD 约束,根标签为<generatorConfiguration>,所有配置均嵌套在该标签下,默认仅生成 Entity、Mapper 接口、Mapper XML,下文按「核心根标签 - 一级核心标签 - 二级子标签」的层级,详细说明所有常用配置项的作用、属性及使用规范,同时标注核心必配项和自定义扩展项。

一、根标签:<generatorConfiguration>

所有 MBG 配置的顶层根标签 ,无任何属性,是整个配置文件的容器,所有其他标签(如<classPathEntry><context>)均为其子标签,是配置文件的基础骨架。

二、一级核心标签(根标签直接子标签)

1. <classPathEntry>:数据库驱动包路径配置(必配)

作用 :指定数据库驱动的本地绝对路径,MBG 通过该路径加载数据库驱动类,实现与数据库的连接,无此配置会导致数据库连接失败核心属性

  • location:必填,数据库驱动 JAR 包的本地绝对路径 (可从 Maven 仓库复制,如 MySQL8.0 驱动路径);示例

xml

复制代码
<classPathEntry location="C:\Users\username\.m2\repository\mysql\mysql-connector-java\8.0.33\mysql-connector-java-8.0.33.jar"/>

2. <context>:生成规则上下文(核心必配,可多个)

作用 :定义一套完整的代码生成规则,包含数据库连接、生成策略、包路径、表映射等所有核心配置,一个配置文件可配置多个<context>(适配多数据库 / 多生成规则),至少配置 1 个核心属性

  • id:必填,上下文唯一标识(自定义,如MySQLOracle_Prod),用于区分不同生成规则;
  • targetRuntime:必填,指定生成代码适配的 MyBatis 版本,常用值:
    • MyBatis3:推荐,生成完整的 CRUD 方法(含selectByPrimaryKeyinsertSelective等);
    • MyBatis3Simple:生成简化版 CRUD,仅基础增删改查;
  • defaultModelType:可选,实体类生成模式,推荐flat(扁平化模式),生成单表对应单个实体类,无嵌套子类,适配绝大多数场景;示例

xml

复制代码
<context id="MySQL" targetRuntime="MyBatis3" defaultModelType="flat">
    <!-- 所有子配置均嵌套在此 -->
</context>

三、<context> 核心子标签(按配置优先级排序)

1. <commentGenerator>:注释生成器配置(可选)

作用 :控制生成代码中的注释规则,可关闭自动生成的时间、作者、表说明等注释,让代码更简洁。核心子标签<property>,通过name-value配置注释规则,常用属性:

  • suppressAllComments:值true/false,是否关闭所有注释 ,推荐true
  • suppressDate:值true/false,是否关闭日期注释(即使不关闭所有注释,也建议关闭日期,避免每次生成刷新时间);
  • addRemarkComments:值true/false,是否将数据库表 / 字段的备注信息 生成到注释中,需数据库表提前配置备注;示例

xml

复制代码
<commentGenerator>
    <property name="suppressAllComments" value="true"/>
    <property name="suppressDate" value="true"/>
</commentGenerator>

2. <jdbcConnection>:数据库连接配置(核心必配)

作用 :配置数据库连接信息,MBG 通过该配置连接数据库,读取表结构生成对应代码,属性需与数据库实际环境完全匹配核心属性

  • driverClass:必填,数据库驱动类全限定名(不可写错):
    • MySQL8.0+:com.mysql.cj.jdbc.Driver(需指定时区);
    • MySQL5.x:com.mysql.jdbc.Driver
    • Oracle:oracle.jdbc.driver.OracleDriver
    • PostgreSQL:org.postgresql.Driver
  • connectionURL:必填,数据库连接 URL,包含地址、端口、库名、连接参数;
  • userId:必填,数据库登录用户名;
  • password:必填,数据库登录密码;MySQL8.0 + 示例(含 UTF-8 编码、时区、关闭 SSL):

xml

复制代码
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/demo_db?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"
                userId="root"
                password="123456">
</jdbcConnection>

3. 代码生成器三剑客(Entity/Mapper/XML,核心必配)

这三个标签是 MBG默认核心生成器 ,分别控制实体类、Mapper 接口、Mapper XML 文件的生成路径和规则,三者配合生成数据访问层基础代码,缺一不可

(1)<javaModelGenerator>:实体类(Entity)生成配置

作用 :指定生成的实体类的包路径本地生成目录 ,并配置实体类的生成规则。核心属性

  • targetPackage:必填,实体类的包名(如com.demo.entity),生成后会自动按包名创建多级目录;
  • targetProject:必填,生成文件的根目录(Maven 项目默认src/main/java);常用子标签<property>
  • enableSubPackages:值true/false,是否按数据库表名自动分包 ,推荐true(如多表时按模块分包);
  • trimStrings:值true/false,是否自动修剪字符串类型字段的前后空格,推荐true示例

xml

复制代码
<javaModelGenerator targetPackage="com.demo.entity" targetProject="src/main/java">
    <property name="enableSubPackages" value="true"/>
    <property name="trimStrings" value="true"/>
</javaModelGenerator>
(2)<sqlMapGenerator>:Mapper XML 文件生成配置

作用 :指定生成的 Mapper XML 映射文件的包路径本地生成目录 ,XML 中包含 SQL 语句和结果集映射。核心属性

  • targetPackage:必填,XML 文件的包名(Maven 项目推荐mapper,生成在resources下);
  • targetProject:必填,XML 文件根目录(Maven 项目默认src/main/resources);常用子标签<property name="enableSubPackages" value="true"/>(按表自动分包);示例

xml

复制代码
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
    <property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
(3)<javaClientGenerator>:Mapper 接口生成配置

作用 :指定生成的 Mapper 接口的包路径本地生成目录生成类型 ,接口与 XML 文件一一对应。核心属性

  • type:必填,Mapper 接口生成类型,推荐XMLMAPPER(接口与 XML 分离,符合 MyBatis 最佳实践);
  • targetPackage:必填,Mapper 接口的包名(如com.demo.mapper);
  • targetProject:必填,接口根目录(Maven 项目默认src/main/java);常用子标签<property name="enableSubPackages" value="true"/>(按表自动分包);示例

xml

复制代码
<javaClientGenerator type="XMLMAPPER" targetPackage="com.demo.mapper" targetProject="src/main/java">
    <property name="enableSubPackages" value="true"/>
</javaClientGenerator>

4. <table>:数据库表映射配置(核心必配,可多个)

作用 :指定需要生成代码的数据库表 ,并配置表与实体类的映射规则,一个<table>对应一张表 ,可配置多个。核心属性

  • tableName:必填,数据库中真实的表名 / 视图名 (需与数据库一致,支持通配符%,如user_%匹配所有以user_开头的表);
  • domainObjectName:可选,生成的实体类名 (自定义驼峰命名,如tableName="sys_user"对应domainObjectName="SysUser");
    • 若不配置,MBG 会自动将表名转为驼峰命名(如sys_userSysUser);常用子标签<property>(表级生成规则)
  • useActualColumnNames:值true/false,是否使用数据库原始字段名 作为实体属性名,默认false(自动将下划线字段转为驼峰,如user_nameuserName),推荐保持默认;示例(单表 + 通配符表):

xml

复制代码
<!-- 单表配置:指定表名和实体类名 -->
<table tableName="sys_user" domainObjectName="SysUser"/>
<!-- 通配符配置:匹配所有sys_开头的表,自动生成实体类名 -->
<table tableName="sys_%"/>

5. 自定义扩展标签(非 MBG 默认,Controller/Service 生成用)

这两个标签是自定义扩展配置(需配合自定义生成器和 Velocity 模板使用),用于实现 Controller、Service、ServiceImpl 的自动生成,是对 MBG 默认功能的扩展。

(1)<javaGenerator>:自定义 Java 类生成路径配置

作用 :指定 Controller/Service/ServiceImpl 等自定义类的包路径生成目录 ,通过type标识生成类型。核心属性

  • type:自定义类型标识(如CONTROLLER/SERVICE/SERVICE_IMPL),需与模板配置一一对应;
  • targetPackage:自定义类的包名(如com.demo.controller);
  • targetProject:自定义类根目录(Maven 项目默认src/main/java);示例

xml

复制代码
<javaGenerator targetPackage="com.demo.controller" targetProject="src/main/java" type="CONTROLLER"/>
<javaGenerator targetPackage="com.demo.service" targetProject="src/main/java" type="SERVICE"/>
(2)<templateConfiguration>:自定义模板配置

作用 :指定自定义类对应的Velocity/FreeMarker 模板路径 ,MBG(或自定义生成器)通过模板渲染生成代码,同时可保留 MBG 默认模板。核心属性

  • type:模板类型,与<javaGenerator>type(自定义)或 MBG 默认类型(MODEL/MAPPER/SQLMAP)一致;
  • location:模板文件路径(支持相对路径 / 绝对路径,如自定义模板src/main/resources/template/controller.vm);示例

xml

复制代码
<!-- 自定义模板:Controller/Service -->
<templateConfiguration type="CONTROLLER" location="src/main/resources/template/controller.vm"/>
<!-- 保留MBG默认模板:Entity/Mapper -->
<templateConfiguration type="MODEL" location="org/mybatis/generator/templates/model.vm"/>

四、核心配置项速查(必配 / 可选 / 自定义)

标签 核心作用 配置类型 关键属性
<classPathEntry> 配置数据库驱动路径 必配 location(绝对路径)
<context> 生成规则上下文 必配 id/targetRuntime/defaultModelType
<jdbcConnection> 数据库连接信息 必配 driverClass/connectionURL/userId/password
<javaModelGenerator> 实体类生成配置 必配 targetPackage/targetProject
<sqlMapGenerator> Mapper XML 生成配置 必配 targetPackage/targetProject
<javaClientGenerator> Mapper 接口生成配置 必配 type=XMLMAPPER/targetPackage
<table> 数据库表映射 必配 tableName/domainObjectName
<commentGenerator> 控制注释生成 可选 suppressAllComments/suppressDate
<javaGenerator> 自定义类生成路径(Controller/Service) 自定义 type/targetPackage
<templateConfiguration> 自定义模板路径 自定义 type/location

五、配置关键注意事项

  1. 路径统一 :所有targetProject需与 Maven/Gradle 项目目录一致(如 Java 类src/main/java,资源文件src/main/resources),避免生成文件到错误目录;
  2. 包名规范targetPackage需遵循 Java 包名规范(小写 + 点分隔),生成后会自动创建多级目录,无需手动创建;
  3. 驱动匹配driverClassclassPathEntry的驱动包版本必须一致(如 MySQL8.0 + 驱动对应com.mysql.cj.jdbc.Driver);
  4. URL 参数 :MySQL8.0 + 的connectionURL必须指定serverTimezone(如GMT+8),否则会报时区异常;
  5. 避免覆盖 :若手动修改过生成的代码,建议在自定义生成器中设置overwrite=false,避免重新生成时覆盖手动修改的内容;
  6. 主键要求 :MBG 默认生成的selectByPrimaryKeydeleteByPrimaryKey等方法依赖数据库表主键,需确保配置的表已设置主键,否则相关方法生成失败。

六、完整最小化可运行配置示例(仅生成 Entity/Mapper/XML)

以下是剔除自定义扩展的最小化配置,直接修改数据库信息和包名即可运行,适配 Spring Boot + MyBatis 基础项目:

xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!-- 数据库驱动包路径(替换为自己的路径) -->
    <classPathEntry location="C:\Users\username\.m2\repository\mysql\mysql-connector-java\8.0.33\mysql-connector-java-8.0.33.jar"/>

    <context id="MySQL" targetRuntime="MyBatis3" defaultModelType="flat">
        <!-- 关闭所有注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 数据库连接配置(替换为自己的数据库信息) -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/demo_db?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!-- 实体类生成 -->
        <javaModelGenerator targetPackage="com.demo.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>

        <!-- Mapper XML生成 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- Mapper 接口生成 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.demo.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 生成代码的表(替换为自己的表名) -->
        <table tableName="sys_user" domainObjectName="SysUser"/>
        <table tableName="sys_menu"/>
    </context>
</generatorConfiguration>

以上配置项覆盖了generatorConfig.xml所有核心场景,包括 MBG 默认基础配置和 Controller/Service 自定义扩展配置,只需根据项目实际环境(数据库类型、包名、表名)修改对应属性,即可快速实现代码自动生成。

相关推荐
追逐梦想的张小年2 小时前
JUC编程03
java·开发语言·idea
csdn2015_2 小时前
generatorConfig.xml 配置 Controller、Service 完整教程
xml·mybatis
万邦科技Lafite2 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
indexsunny2 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway
蓁蓁啊2 小时前
C/C++编译链接全解析——gcc/g++与ld链接器使用误区
java·c语言·开发语言·c++·物联网
sheji34162 小时前
【开题答辩全过程】以 基于SpringBoot的疗养院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
tb_first2 小时前
万字超详细苍穹外卖学习笔记2
java·jvm·数据库·spring·tomcat·maven
短剑重铸之日2 小时前
《设计模式》第六篇:装饰器模式
java·后端·设计模式·装饰器模式