MyBatis Generator generatorConfig.xml配置详解

本文详细介绍MyBatis Generator配置文件generatorConfig.xml的各部分设置,包括如何通过配置生成实体类、Mapper XML文件及对应的DAO接口等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有Generator的xml详细说明见:http://mybatis.org/generator/configreference/xmlconfig.html (英文版)


现在针对generatorConfig.xml配置进行解说,至于其内部元素的详解见英文文档,贴上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>  
        <!-- 引入配置文件 -->  
        <properties resource="init.properties"/>  
          
        <!-- 指定数据连接驱动jar地址 -->  
        <classPathEntry location="${classPath}" />  
          
        <!-- 一个数据库一个context -->  
        <context id="infoGuardian">  
            <!-- 注释 -->  
            <commentGenerator >  
                <property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->  
                <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->  
            </commentGenerator>  
              
            <!-- jdbc连接 -->  
            <jdbcConnection driverClass="${jdbc_driver}"  
                connectionURL="${jdbc_url}" userId="${jdbc_user}"  
                password="${jdbc_password}" />  
              
            <!-- 类型转换 -->  
            <javaTypeResolver>  
                <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
                <property name="forceBigDecimals" value="false"/>  
            </javaTypeResolver>  
              
            <!-- 生成实体类地址 -->    
            <javaModelGenerator targetPackage="com.oop.eksp.user.model"  
                targetProject="${project}" >  
                <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
                <property name="enableSubPackages" value="false"/>  
                <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
                <property name="trimStrings" value="true"/>  
            </javaModelGenerator>  
              
            <!-- 生成mapxml文件 -->  
            <sqlMapGenerator targetPackage="com.oop.eksp.user.data"  
                targetProject="${project}" >  
                <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
                <property name="enableSubPackages" value="false" />  
            </sqlMapGenerator>  
              
            <!-- 生成mapxml对应client,也就是接口dao -->      
            <javaClientGenerator targetPackage="com.oop.eksp.user.data"  
                targetProject="${project}" type="XMLMAPPER" >  
                <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
                <property name="enableSubPackages" value="false" />  
            </javaClientGenerator>  
              
            <!-- 配置表信息 -->      
            <table schema="${jdbc_user}" tableName="s_user"  
                domainObjectName="UserEntity" enableCountByExample="false"  
                enableDeleteByExample="false" enableSelectByExample="false"  
                enableUpdateByExample="false">  
                <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample   
                    是否生成 example类   -->  
                  
                <!-- 忽略列,不生成bean 字段 -->  
                <ignoreColumn column="FRED" />  
                <!-- 指定列的java数据类型 -->  
                <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />  
            </table>  
      
        </context>  
    </generatorConfiguration>  



附带上我的init.properties
#Mybatis Generator configuration  
project=E:/workplace/EKSP/src
classPath=E:/workplace/EKSP/WebContent/WEB-INF/lib/ojdbc14.jar  
jdbc_driver = oracle.jdbc.driver.OracleDriver  
jdbc_url=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
jdbc_user=INFOGUARDIAN  
jdbc_password=info_idap132  

from :http://blog.youkuaiyun.com/pk490525/article/details/16819307


### MyBatis Generator `generatorConfig.xml` 文件配置详解 #### 1. 基本结构概述 `generatorConfig.xml` 是 MyBatis Generator (MBG) 的核心配置文件,用于定义生成代码的具体规则和目标。它主要包括以下几个部分:全局设置、数据源连接信息、JDBC 连接器以及具体的上下文(context) 和表(table) 定义。 以下是基本的 XML 结构框架: ```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="/path/to/your/jdbc_driver.jar"/> <!-- 上下文定义 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- JDBC 连接配置 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC" userId="root" password="password"/> <!-- Java Model 生成器 --> <javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- SQL Map 生成器 --> <sqlMapGenerator targetPackage="test.mapper.resources" targetProject="E:\MyProject\src\main\resources"/> <!-- Mapper 接口生成器 --> <javaClientGenerator type="XMLMAPPER" targetPackage="test.mapper" targetProject="E:\MyProject\src\main\java"/> <!-- 表映射 --> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false"/> </context> </generatorConfiguration> ``` --- #### 2. 关键标签解析 ##### (1)`<context>` 标签 `<context>` 是整个配置的核心节点,表示一组生成逻辑。其主要属性如下: - **id**: 当前 context 的唯一标识符。 - **targetRuntime**: 指定 MBG 的运行环境版本,默认为 `MyBatis3`[^1]。 ##### (2)`<jdbcConnection>` 标签 此标签用于定义数据库连接信息,具体字段含义如下: - **driverClass**: 数据库驱动类名。 - **connectionURL**: 数据库连接 URL。 - **userId/password**: 用户名和密码。 ##### (3)`<javaModelGenerator>` 标签 负责生成实体类(Java Bean),常用属性有: - **targetPackage**: 实体类所在的包路径。 - **targetProject**: 输出目录位置。 - **properties**: 可选配置项,如启用子包分割 (`enableSubPackages`) 或自动去除字符串前后空白字符 (`trimStrings`)。 示例配置见引用[^2]: ```xml <javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> ``` ##### (4)`<sqlMapGenerator>` 标签 用于生成 Mapper 映射文件(SQL 脚本)。常见属性包括: - **targetPackage**: 映射文件所在资源包路径。 - **targetProject**: 输出目录。 ##### (5)`<javaClientGenerator>` 标签 定义 Mapper 接口及其对应的实现形式。关键属性解释: - **type**: 支持两种模式——`ANNOTATEDMAPPER`(注解风格)或 `XMLMAPPER`(XML 风格)。 - **targetPackage/targetProject**: 同上。 ##### (6)`<table>` 标签 指定需要生成代码的数据表,支持多种自定义选项: - **tableName**: 数据库中的实际表名。 - **domainObjectName**: 对应的实体类名称。 - **enableXXXByExample**: 是否开启基于条件查询的功能方法。 --- #### 3. 扩展功能介绍 除了基础配置外,还可以通过 `<plugin>` 插入额外功能模块来增强灵活性。例如,在某些场景中可能需要覆盖默认行为或者引入特定工具类。以下是一个简单的插件声明实例: ```xml <context ... > ... <plugin type="org.example.CustomPlugin"> <property name="someProperty" value="value"/> </plugin> ... </context> ``` 此外,如果希望替换内置列处理机制,则可以通过 `introspectedColumnImpl` 属性指定新的实现类。 --- #### 4. Maven 构建集成 当项目采用 Maven 管理时,可通过官方插件简化执行流程[^3]。只需在 `pom.xml` 中添加相应依赖并绑定命令即可完成自动化操作。 --- ### 总结 上述内容涵盖了 `generatorConfig.xml` 的典型用法及高级特性应用技巧。合理调整各组件参数能够显著提升开发效率,满足多样化需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值