ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# <context> 元素 <context> 元素用于指定生成一组对象的环境。 子元素用于指定要连接到的数据库、 要生成对象的类型和要内省的表。 多个 <context> 元素可以在 [<generatorConfiguration>](generatorConfiguration.html) 元素中列出来,这样可以在同一个MyBatis Generator (MBG)从不同的数据库或者使用不同的生成生成器参数生成对象。 ## 必选属性 | 属性 | 描述 | | --- | --- | | id | context唯一的标识符。此值将用于某些错误消息。 | ## 可选属性 | 属性 | 描述 | | --- | --- | | defaultModelType | 这个属性用来设置生成对象类型的默认值。 对象类型定义了MBG如何生成实体类。 对某些对象类型,MBG会给每一个表生成一个单独的实体类。 对另外一些对象类型,MBG会根据表结构生成不同的类。这个属性有以下可选值: | | | conditional _这是默认值_ 这个模型和hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。 | | | flat 该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。 | | | hierarchical 如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系(注:BLOB类 继承 其他字段类 继承 主键类)。 | | targetRuntime | 此属性用于指定生成的代码的运行时目标。 该属性支持这些特殊的值: | | | MyBatis3 _这是默认值_ 使用这值的时候,MBG会生成兼容MyBatis 3.0或更高版本, 兼容JSE 5.0或更高版本的对象(例如Java模型类和Mapper接口会使用泛型)。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 另外,这些生成器生成的Java对象支持JSE 5.0特性,包含泛型和注解。 | | | MyBatis3Simple _这是默认值_ 使用这值的时候,和上面的MyBatis3类似,但是不会有"by example"一类的方法,只有少量的动态SQL。 Ibatis2Java2 使用这值的时候,MBG会生成兼容iBATIS 2.2.0或更高版本(除了iBATIS 3),还有Java2的所有层次。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 这些生成的对象不能100%和原生的Abator或其他的代码生成器兼容。 | | | Ibatis2Java5 使用这值的时候,MBG会生成兼容iBATIS 2.2.0或更高版本(除了iBATIS 3), 兼容JSE 5.0或更高版本的对象(例如Java模型类和Dao类会使用泛型)。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 另外,这些生成器生成的Java对象支持JSE 5.0特性,包含泛型和注解。 这些生成的对象不能100%和原生的Abator或其他的代码生成器兼容。 | | | 如果您想创建一个完全不同的代码生成器, 使用一个继承了`org.mybatis.generator.api.IntrospectedTable`类的权限定类名替换该值。 通过这个值,您可以创建您自己的代码生成器,然后插入到代码生成器引擎中。 查阅 [扩展 MyBatis Generator](../reference/extending.html) 页面获取更多信息。 | | introspectedColumnImpl | 使用这个值去指定一个继承了`org.mybatis.generator.api.IntrospectedColumn`类的权限定名称。 这可以修改代码生成器计算列信息时候的行为。 查阅 [扩展 MyBatis Generator](../reference/extending.html) 页面获取更多信息。 | ## 子元素 * [<property>](property.html) (0..N) * [<plugin>](plugin.html) (0..N) * [<commentGenerator>](commentGenerator.html) (0 or 1) * [<jdbcConnection>](jdbcConnection.html) (1 Required) * [<javaTypeResolver>](javaTypeResolver.html) (0 or 1) * [<javaModelGenerator>](javaModelGenerator.html) (1 Required) * [<sqlMapGenerator>](sqlMapGenerator.html) (0 or 1) * [<javaClientGenerator>](javaClientGenerator.html) (0 or 1) * [<table>](table.html) (1..N) ## 支持的属性 下面的表格列出了所有可用的 [<property>](property.html) 子元素: | 属性名 | 属性值 | | --- | --- | | autoDelimitKeywords | 如果是true,那么MGB会分隔SQL关键字,如果他们被用作表中的列名。 MBG维护了许多不同数据库的SQL关键字列表。 然而,列表可能不是非常的全面。 如果一个特殊的关键字没有在MBG的关键字列表中, 您需要通过`<columnOverride>`强制分隔列。查看 `org.mybatis.generator.internal.db.SqlReservedWords` 这个类的源码查看MGB包含的关键字列表。_默认值是false。_ | | beginningDelimiter | 要用作需要分隔符的 SQL 标识符开头的标识符分隔符的值。 MBG会自动分割包含空格的SQL标识符。 MGB还会自动分隔在 <table> 或 <columnOverride>中配置了具体要求的标识符。_默认值是双引号 (")。_ | | endingDelimiter | 要使用作为结束的标识符分隔符需要分隔符的 SQL 标识符的值。 MBG会自动分割包含空格的SQL标识符。 MGB还会分隔在 <table> 或 <columnOverride>中配置了具体要求的标识符。_默认值是双引号 (")。_ | | javaFileEncoding | 通过这个属性设置要使用的Java文件的编码。 新生成的Java文件会用这个编码写入到文件系统。 如果Java文件已经存在并且可以使用这个编码进行读取,就会执行合并操作。 如果没有指定,就会使用平台的默认编码。查阅 `java.nio.charset.Charset` 获取可以选择的编码的信息。 | | javaFormatter | 使用此属性来指定生成的 Java 文件的用户提供 formater 的完整的类名称。 这个类必须继承 `org.mybatis.generator.api.JavaFormatter` 而且必须有一个默认(不含参数)的构造方法。 每一个context都持有一个单独的javaFormatter的实例。 默认的javaFormatter是 `org.mybatis.generator.api.dom.DefaultJavaFormatter`。 默认的格式使用内置到Java DOM类的格式。 | | xmlFormatter | 使用此属性来指定生成的 XML 文件的用户提供 formater 的完整的类名称。 这个类必须继承 `org.mybatis.generator.api.XmlFormatter` 而且必须有一个默认(不含参数)的构造方法。 每一个context都持有一个单独的xmlFormatter的实例。 默认的xmlFormatter是 `org.mybatis.generator.api.dom.DefaultXmlFormatter`。 默认的格式使用内置到Java DOM类的格式。 |