代码生成器
参考官方文档
代码生成器XML配置详解
1. generatorConfiguration
generatorConfiguration元素是MyBatis Generator配置文件的根元素。该文件应包含以下DOCTYPE:
<?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">
子标签:
properties(0个或1个)、classPathEntry(0个或多个)、context(1个或多个)
2. properties
properties元素用于指定在配置解析中使用的外部属性文件。配置中的任何属性都将接受$ {property}
形式的属性
。将在指定的属性文件中搜索匹配值,并将替换该匹配值。该属性文件是Java属性文件的常规格式
必填属性:
resource:指定classpath下的属性文件。
url:指定文件系统的特定位置(绝对路径)。
3. classPathEntry
classPathEntry元素用于将类路径位置添加到MBG运行的类路径中 。MBG在以下情况下从这些位置加载类:
-
加载用于数据库自省的JDBC驱动程序时
-
在JavaModelGenerator中加载根类以检查重写的方法时
必填属性:
location: 要添加到类路径的JAR / ZIP文件的完整路径名,或要添加到类路径的目录的全路径名。
4. context
context元素用于指定生成一组对象的环境。子元素用于指定要连接的数据库,要生成的对象的类型以及要进行自检的表。可以在generatorConfiguration元素内列出多个元素, 以允许在MBG的同一运行中从不同的数据库或具有不同的生成参数生成对象。
必填属性:
ID:唯一标识符
可选属性:
属性 | 描述 |
---|---|
defalutModelType | *如果targetRuntime为“ MyBatis3Simple”,“ MyBatis3DynamicSql”或“ MyBatis3Kotlin”,则忽略此属性。*当targetRuntime为MyBatis3时。 conditional :如果该单独的类仅包含一个字段,则不会生成单独的类。因此,如果一个表只有一个主键字段,则该字段将合并到基本记录类中。 flat :为任何表仅生成一个域类。该类将保留表中的所有字段。 hierarchical :如果表具有主键,则该模型将生成一个主键类,另一个类将保留表中的任何BLOB列,另一个类将保留其余字段。类之间存在适当的继承关系。 |
targetRuntime | 此属性用于为生成的代码指定运行时目标。该属性支持以下特殊值:MyBatis3DynamicSql:默认值。使用该值,MBG将生成与MyBatis 3.4.2和更高版本以及Java 8和更高版本兼容的对象。无论为“ defaultModelType”指定什么内容,都将以“ FLAT”样式生成模型对象。这也意味着不存在“具有BLOB”和“不具有BLOB”的方法。无论为的“类型”指定了什么,映射器都将作为带注释的映射器生成。不会生成XML。不是必需的,如果指定,将被忽略。MyBatis Dynamic SQL以“每个查询”的方式而不是其他运行时的“全有或全无”的方式支持表别名。 因此,已配置的表别名将被忽略。 MyBatis3:使用该值,MBG将生成与MyBatis 3.0版及更高版本以及JSE 5.0版及更高版本兼容的对象。 MyBatis3Simple:使用该值,MBG将生成与MyBatis 3.0版及更高版本以及JSE 5.0版及更高版本兼容的对象。用此目标运行时生成的映射器是非常基本的CRUD操作,仅没有“示例”方法且动态SQL很少 。 MyBatis3Kotlin 和 MyBatis3DynamicSqlV1:略 |
introspectedColumnImpl | 使用此值来指定扩展org.mybatis.generator.api.IntrospectedColumn 的类的标准名称 |
子标签: context有如下这些子标签。
-
property (0…N)
-
plugin (0…N)
-
commentGenerator (0 or 1)
-
connectionFactory (connectionFactory和jdbcConnection二选一)
-
jdbcConnection (connectionFactory和jdbcConnection二选一)
-
javaTypeResolver (0 or 1)
-
javaModelGenerator (1 Required)
-
sqlMapGenerator (0 or 1)
-
javaClientGenerator (0 or 1)
-
table (1…N)
4.1 property:
属性 | 描述 |
---|---|
autoDelimitKeywords | 如果为true,则MBG如果将SQL关键字用作表中的列名,则将分隔SQL关键字。MBG维护许多不同数据库的SQL关键字列表。但是,列表可能并不完整。如果某个特定的关键字不在MBG的列表中,则可以强制使用分隔该列 。默认值为false。 |
startingDelimiter | 用作需要定界符的SQL标识符的起始标识符定界符的值。如果标识符包含空格,MBG将自动分隔SQL标识符。如果在或配置中特别要求,MBG还将分隔SQL标识符。 默认值为双引号(“)。 |
endingDelimiter | 用作需要定界符的SQL标识符的结束标识符定界符的值。如果标识符包含空格,MBG将自动分隔SQL标识符。如果在或配置中特别要求,MBG还将分隔SQL标识符。 默认值为双引号(“)。 |
javaFileEncoding | 指定在处理Java文件时使用的编码。如果未指定,则将使用平台默认编码。 |
javaFormatter | 使用此属性可以为生成的Java文件指定用户提供的格式化程序的完整类名。该类必须实现org.mybatis.generator.api.JavaFormatter, 并且必须具有默认(无参数)构造函数。每个上下文都包含Java格式化程序的单个实例。默认的Java格式化程序是 org.mybatis.generator.api.dom.DefaultJavaFormatter 。 |
targetJava8 | 使用此属性可以指定生成的代码可以使用Java 8+功能。例如,用于集合实例化的菱形运算符。 有效值为 true 或false 。默认值为true 。 |
kotlinFileEncoding | 此属性可以指定使用Kotlin文件时要使用的编码。如果未指定,则将使用平台默认编码。 |
kotlinFormatter | 使用此属性可以为生成的Kotlin文件指定用户提供的格式化程序的完整类名。该类必须实现org.mybatis.generator.api.KotlinFormatter, 并且必须具有默认的(无参数)构造函数。每个上下文都包含Kotlin格式化程序的单个实例。默认的Kotlin格式化程序是 org.mybatis.generator.api.dom.DefaultKotlinFormatter 。 |
xmlFormatter | 使用此属性可以为生成的XML文件指定用户提供的格式化程序的完整类名。该类必须实现org.mybatis.generator.api.XmlFormatter , 并且必须具有默认的(无参数)构造函数。每个上下文都包含XML格式化程序的单个实例。默认的XML格式化程序是 org.mybatis.generator.api.dom.DefaultXmlFormatter 。默认格式器使用XML DOM类中内置的格式。 |
4.2 plugin:
plugin元素用于定义插件。插件可用于扩展或修改MBG生成的代码 。
属性 | 描述 |
---|---|
type | 实现插件的类的完全限定名称。该类必须实现org.mybatis.generator.api.Plugin 接口 ,并且必须具有公共的默认构造函数。请注意,扩展适配器类org.mybatis.generator.api.PluginAdapter 比实现整个接口要容易。 |
4.3 commentGenerator:
commentGenerator元素用于定义注释生成器的属性。Comment Generator用于为MBG生成的各种元素(Java字段,Java方法,XML元素等)生成注释 。
可选属性:
type: 这可以用于指定用户提供的注释生成器的类型。该类必须实现 org.mybatis.generator.api.CommentGenerator
接口,并且必须具有公共的默认构造函数。该属 性还接受特殊值DEFAULT,在这种情况下,将使用默认实现类 org.mybatis.generator.internal.DefaultCommentGenerator
子标签:
属性 | 描述 |
---|---|
suppressAllComments | 于指定MBG是否在生成的代码中包含任何注释。该属性支持以下值: **false:**默认值。所有生成的elelments将包含注释,指示该元素是生成的元素。 true: 如果该属性为true,则不会将注释添加到任何生成的元素。 Warning: 如果将此值设置为true,则将禁用所有代码合并。 |
suppressDate | 此属性用于指定MBG是否在生成的注释中包括生成时间戳。该属性支持以下值:**false:**默认值。所有生成的注释都将包含生成元素时的时间戳。 true: 如果该属性为true,则不会将时间戳添加到生成的注释中。 |
addRemarkComments | 指定MBG是否在生成的注释中包括db表中的表和列注释。该属性支持以下值:false:默认值。在生成元素时,所有生成的注释将不包含db表中的表和列注释。 true: 当该属性为true时,db表中的表和列注释将添加到生成的注释中。 Warning: 如果preventAllComments 选项为true,则将忽略此选项。 |
dateFormat | 将日期写入生成的注释时使用的日期格式字符串。此字符串将用于构造java.text.SimpleDateFormat 对象。可以在此处指定该对象的任何有效格式字符串。默认情况下,日期字符串将来自java.util.Date 的toString() 方法。 Warning:如果preventAllComments 选项为true,则将忽略此选项。 Warning: 如果preventDate 选项为true,则将忽略此选项。 |
4.4 connectionFactory:
connectionFactory元素用于指定连接工厂,以获取内省表所需的数据库连接。MyBatis Generator使用JDBC的DatabaseMetaData
类来发现您在配置中指定的表的属性。每个context
元素都需要一个connectionFactory
或jdbcConnection
元素。
可选属性:
type: 指定用户提供的连接工厂的类型 。 该类必须实现org.mybatis.generator.api.ConnectionFactory
接口, 并且必须具有公共的默认构造函数。该属性还接受特殊值DEFAULT,在这种情况下,将使用默认实现类 org.mybatis.generator.internal.JDBCConnectionFactory。
子标签:
属性 | 描述 |
---|---|
driverClass | 此属性用于指定JDBC驱动程序的完全限定的类名。默认连接工厂需要此属性。 |
connectionURL | 此属性用于指定数据库的JDBC连接URL。默认连接工厂需要此属性。 |
userId | 此属性用于指定连接的用户ID |
password | 此属性用于指定连接的密码。 |
4.5 jdbcConnection:
jdbcConnection元素用于指定内省表所需的数据库连接的属性。MyBatis Generator使用JDBC的DatabaseMetaData
类来发现您在配置中指定的表的属性。每个context
元素都需要一个connectionFactory
或jdbcConnection
元素。
必填属性:
属性 | 描述 |
---|---|
driverClass | 用于访问数据库的JDBC驱动程序的标准类名。 |
connectionURL | 用于访问数据库的JDBC连接URL。 |
可选属性:
属性 | 描述 |
---|---|
userId | 此属性用于指定连接的用户ID |
password | 此属性用于指定连接的密码。 |
4.6 javaTypeResolver:
javaTypeResolver元素用于定义Java Type Resolver的属性。Java类型解析器用于根据数据库列信息计算Java类型。默认的Java Type Resolver尝试通过尽可能地替换Integral类型(Long,Integer,Short等)来使JDBC DECIMAL和NUMERIC类型更易于使用。如果不希望这样做,请将属性“ forceBigDecimals
”设置为“ true”。如果您想要不同于默认行为的行为,也可以替换自己的实现 。
可选属性:
type: 指定用户提供的Java类型解析器。该类必须实现org.mybatis.generator.api.JavaTypeResolver
接口 ,并且必须具有公共默认构造函数。该属性还接受特殊值DEFAULT,在这种情况下,将使用默认实现类org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl
子标签:
属性 | 描述 |
---|---|
forceBigDecimals | 此属性用于指定MyBatis Generator是否应将DECIMAL和NUMERIC字段强制使用java.math.BigDecimal ,而不是在可能的情况下替换整数类型。该属性支持以下值:**false:**默认值。默认的Java类型解析器将尝试通过尽可能替换Integral类型来使JDBC DECIMAL和NUMERIC类型更易于使用 。 默认规则: 精度=0或长度>18,使用BigDecimal 类型。 精度=0或10<=长度<=18,使用Long 类型。 精度=0或5<=长度<=9,使用Integer 类型。 精度=0或长度<5,使用Short 类型。 true: 当该属性为true时,如果数据库列的类型为DECIMAL或NUMERIC,则Java类型解析器将始终使用java.math.BigDecimal。 |
useJSR310Types | 此属性用于指定MyBatis Generator是否应对DATE,TIME和TIMESTAMP字段强制使用JSR-310数据类型,而不是使用java.util.Date 。 如果为true,则将按以下方式解析类型: DATE -> java.time.LocalDate TIME -> java.time.LocalTime TIMESTAMP -> java.time.LocalDateTime TIME_WITH_TIMEZONE -> java.time.OffsetTime TIMESTAMP_WITH_TIMEZONE -> java.time.OffsetDateTime |
4.7 javaModelGenerator:
javaModelGenerator元素用于定义Java模型生成器的属性。Java模型生成器将构建与自省表匹配的主键类,记录类和“按示例查询”类。此元素是context
元素的必需子元素
必填属性:
属性 | 描述 |
---|---|
targetPackage | 这是将生成的类放在其中的包。在默认生成器中,属性“ enableSubPackages”控制如何计算实际包。如果为true,则计算的包将是targetPackage以及表的目录和架构的子包(如果存在)。如果为false(默认值),则计算出的包将与targetPackage属性中指定的包完全相同。MyBatis Generator将根据所生成软件包的需要创建文件夹。 |
targetProject | 这用于为生成的对象指定目标项目。在Eclipse环境中运行时,它指定将在其中保存对象的项目和源文件夹。在其他环境中,该值应该是本地文件系统上的现有目录。如果该目录不存在,MyBatis Generator将不会创建该目录。 |
子标签:
属性 | 描述 |
---|---|
constructorBased | 此属性用于选择MyBatis Generator是否将为该类生成一个构造函数,该构造函数接受该类中每个字段的值。同样,将为每个字段使用构造函数而不是“ setter”来构建SQL结果图。 如果将“ immutable”属性设置为“ true”,则忽略此属性(并强制为“ true”)。 该属性可以被元素中的相应属性覆盖 。 默认值为false。 如果目标运行时为“ MyBatis3Kotlin”,则忽略此属性 |
enableSubPackages | 如果为true,MGB会根据catalog和schema生成子包。 如果为false,直接使用targetPackage属性。默认false。 |
exampleTargetPackage | 此属性用于为生成的示例对象指定其他程序包。如果未指定,示例对象将与其他模型对象在同一包中生成。 注意:在基于MyBatis Dynamic SQL的运行时中,将忽略此属性。 |
exampleTargetProject | 此属性用于为生成的示例对象指定其他项目。如果未指定,示例对象将与其他模型对象在同一项目中生成。 注意:在基于MyBatis Dynamic SQL的运行时中,将忽略此属性。 |
immutable | 配置实体类属性是否可变。默认false。 如果为true,不管contructorBased值为什么,会采用构造器方法入参,并且不会生成setter方法。 |
rootClass | 此属性可用于为所有生成的Java模型对象指定根类。如果表具有主键,则MyBatis Generator将指定此值作为主键对象的超类,否则将其指定为记录对象。通过在Table配置上指定rootClass属性,可以覆盖此值。 重要提示:如果MyBatis Generator能够加载根类,则它将不会覆盖根类中的属性,该属性与通常会生成的属性完全匹配。属性的完全匹配定义如下 属性名称完全匹配 属性是相同类型 属性具有“获取”方法 属性具有“设置器”方法 如果指定,则此属性的值应为完全限定的类名(例如com.mycompany.MyRootClass)。 如果目标运行时为“ MyBatis3Kotlin”,则忽略此属性 |
trimStrings | 此属性用于选择MyBatis Generator是否添加代码以修剪数据库返回的字符字段中的空白。如果您的数据库将数据存储在CHAR字段而不是VARCHAR字段中,则这将很有用。如果为true,MyBatis Generator将插入代码以修剪字符字段。可以用或 元素中的trimStrings属性 覆盖。 默认值为false。 如果目标运行时为“ MyBatis3Kotlin”,则忽略此属性 |
4.8 sqlMapGenerator:
sqlMapGenerator元素用于定义SQL映射生成器的属性。SQL Map Generator为每个表构建MyBatis格式的SQL map XML文件。
仅当您选择的javaClientGenerator需要XML时,此元素才是context
元素的必需子元素。基于MyBatis Dynamic SQL的运行时不会生成XML,并且如果指定了该元素,则会忽略该元素。
如果未指定javaClientGenerator,则适用以下规则:
-
如果指定sqlMapGenerator,则MBG将仅生成SQL映射XML文件和模型类。
-
如果您未指定sqlMapGenerator,则MBG将仅生成模型类。
必填属性:
属性 描述 targetPackage 这是将放置生成的SQL Map的程序包。在默认生成器中,属性“ enableSubPackages”控制如何计算实际包。如果为true,则计算的包将是targetPackage以及表的目录和架构的子包(如果存在)。如果为false(默认值),则计算出的包将与targetPackage属性中指定的包完全相同。MyBatis Generator(MBG)将根据生成的软件包的需要创建文件夹。 targetProject 这用于为生成的SQL映射指定目标项目。在Eclipse环境中运行时,它指定将在其中保存对象的项目和源文件夹。在其他环境中,该值应该是本地文件系统上的现有目录。如果该目录不存在,MBG将不会创建该目录。 子标签
enableSubPackages: 如果为true,MGB会根据catalog和schema生成子包。
如果为false,直接使用targetPackage属性。默认false。
4.9 javaClientGenerator:
javaClientGenerator元素用于定义Java客户端生成器的属性。Java客户端生成器构建Java接口和类,以方便使用所生成的Java模型和XML映射文件。对于MyBatis,生成的对象采用mapper接口的形式。该元素是context
元素的可选子元素。如果未指定此元素,则MBG将不会生成Java客户端接口和类。
必填属性
属性 | 描述 |
---|---|
type | 用于选择预定义的Java客户端生成器之一,或指定用户提供的Java客户端生成器。任何用户提供的生成器都必须扩展 org.mybatis.generator.codegen.AbstractJavaClientGenerator 如果 targetRuntime是MyBatis3DynamicSql,则此属性是可选,将被忽略。如果 targetRuntime是MyBatis3Kotlin,则此属性是可选的,将被忽略。 如果 targetRuntime是MyBatis3,则可以使用以下预定义值:**ANNOTATEDMAPPER:**生成基于注解的mapper接口 ,不生成XML文件 MIXEDMAPPER:简单的地方生成Mapper接口,复杂的动态SQL都将以XML生成 。 XMLMAPPER: 生成XML映射文件 如果 targetRuntime是MyBatis3Simple,则可以使用以下预定义值:**ANNOTATEDMAPPER:**生成基于注解的mapper接口 ,不生成XML文件 XMLMAPPER: 生成XML映射文件 |
targetPackage | 该属性接受以下值来选择预定义的生成器之一:这是将放置生成的接口和实现类的包。在默认生成器中,属性“ enableSubPackages”控制如何计算实际包。如果为true,则计算的包将是targetPackage以及表的目录和架构的子包(如果存在)。如果“ enableSubPackages”为false(默认设置),则计算出的包将与targetPackage属性中指定的包完全相同。MBG将根据生成的软件包的需要创建文件夹。 |
targetProject | 这用于为生成的接口和类指定目标项目。在Eclipse环境中运行时,它指定将在其中保存对象的项目和源文件夹。在其他环境中,该值应该是本地文件系统上的现有目录。如果该目录不存在,MBG将不会创建该目录。 |
子标签
属性 | 描述 |
---|---|
enableSubPackages | 如果为true,MGB会根据catalog和schema生成子包。 如果为false,直接使用targetPackage属性。默认false。 |
rootInterface | 此属性可用于为所有生成的接口对象指定超级接口。通过在Table配置上指定rootInterface 属性,可以覆盖此值。 |
useLegacyBuilder | 如果为true,则带注释的客户端将使用MyBatis中的SqlBuilder生成动态SQL。在MyBatis 3.2和更高版本中,不赞成使用该生成器,而推荐使用新的SQL类。如果为false,则MBG将生成使用新SQL构建器的客户端。默认值为false。 |
4.10 table:
用于配置需要内省数据库的表。只有在table中配置的表才可以生成最终的代码。
数据库标识符
MBG尝试自动处理数据库标识符的区分大小写。在大多数情况下,无论您为catalog
,schema
和tableName
属性指定了什么,MBG都能找到表。MBG的过程遵循以下步骤:
-
如果
catalog
,schema
或tableName
属性中的任何一个都包含空格,则MBG将根据指定的确切大小写查找表。在这种情况下,MBG将自动在生成的SQL中定界表标识符。 -
否则,如果数据库报告标识符存储为大写,则MBG会自动将任何表标识符转换为大写。
-
否则,如果数据库报告标识符存储为小写,则MBG会自动将任何表标识符转换为小写。
-
其他MBG将根据指定的确切大小写查找表。
由于表名是有界的,因此即使数据库通常以大写形式存储标识符,大多数数据库也会使用指定的精确大小写来创建表。在这种情况下,您应该在表配置中指定属性
delimitIdentifiers =“ true”
。
必填属性
tableName: 数据库表的名称(不包括catalog或schema)。如果需要,指定的值可以包含SQL通配符。
例:<table tableName="%"></table>
匹配全部表
可选属性
属性 | 描述 |
---|---|
schema | 数据库的scheam。可以通过sql通配符匹配 |
catalog | 数据库的catalog |
alias | 如果目标运行时是“ MyBatis3DynamicSql”或“ MyBatis3Kotlin”, 则将*忽略此属性。*如果指定,则此值将用于别名表和任何生成的SQL select语句中的所有列名。列名将使用别名alias_actualColumnName作为别名。 |
domainObjectName | 生成的对象名称的基本名称。如果未指定,则MBG将基于tableName自动生成一个名称。名称(在此指定或自动生成)将用于计算生成的域名类名称和DAO类名称。 您可以在域对象名称中指定包片段。例如,如果您指定foo.Bar,则域对象将为 Bar,并且包foo将附加到生成器配置中指定的目标包。 |
mapperName | MyBatis3生成的映射器类和XML文件的名称。如果未指定,则名称将是域对象名称加上“ Mapper”一词。 您可以在映射器名称中指定包片段。例如,如果指定foo.BarMapper,则映射器将为 BarMapper,而foo包将附加到生成器配置中指定的目标包。 |
sqlProviderName | 如果目标运行时是“ MyBatis3DynamicSql”或“ MyBatis3Kotlin” ,则将忽略此属性。MyBatis3生成的SQL提供程序类的名称(根据配置可能会生成也可能不会生成)。如果未指定,则名称将是域对象名称加上“ SqlProvider”一词。 您可以在SQL提供程序名称中指定程序包片段。例如,如果您指定foo.BarSqlProvider,则SQL提供程序将为 BarSqlProvider,并且将包foo附加到生成器配置中指定的目标包中。 |
enableXXX | 如果目标运行时是“ MyBatis3DynamicSql”或“ MyBatis3Kotlin”,则忽略此属性 表示是否生成XXX语句。 默认值为true。 |
selectByPrimaryKeyQueryId | 如果目标运行时是“ MyBatis3DynamicSql”或“ MyBatis3Kotlin”, 则将*忽略此属性。*该值将以以下形式添加到主键选择语句的选择列表中:“’'作为QUERYID”。这对于在运行时识别DBA跟踪工具中的查询很有用。如果使用该值,则应为MBG生成的每个不同查询指定唯一的ID。 |
selectByExampleQueryId | 如果目标运行时是“ MyBatis3DynamicSql”或“ MyBatis3Kotlin”, 则将*忽略此属性。*此值将以以下形式添加到“按示例选择”语句的选择列表中:“’'as QUERYID”。这对于在运行时识别DBA跟踪工具中的查询很有用。如果使用该值,则应为MBG生成的每个不同查询指定唯一的ID |
modelType | 和context 中的defalutModelType含义一样。如果设置值,覆盖defalutModelType值 |
escapeWildcards | 表示查询列是否对schema和表名中的SQL通配符进行转义。默认值false。 |
delimitIdentifiers | 是否给标识符增加分隔符,默认false。当catalog、schema、tableName中包含 空格,默认为true。 |
delimitAllColumns | 是否对所有列添加分割符。默认值false。 |
子标签
-
property (0…N)
-
generatedKey (0 or 1)
-
domainObjectRenamingRule (0 or 1)
-
columnRenamingRule (0 or 1)
-
columnOverride (0…N)
-
ignoreColumn (0…N)
property
属性 | 描述 |
---|---|
constructorBased | 和javaModelGenerator中constructorBased 含义相同。如果设置,覆盖javaModelGenerator值 |
ignoreQualifiersAtRuntime | 默认值false,如果为true,生成的SQL中的表名将不会包含schema和catalog前缀。 |
immutable | 和javaModelGenerator中immutable 含义相同。如果设置,覆盖javaModelGenerator值 |
modelOnly | 此属性用于选择MBG是否仅为表生成模型类。 如果为true,则不会生成Java客户端。如果配置了并将此属性设置为true,则MBG将仅在SQL Mapper XML文件中为此表生成结果映射元素。 如果为true,则此值将覆盖元素上的任何“ enable *”属性-将不会生成CRUD方法。 默认值为false。 |
rootClass | 和javaModelGenerator中rootClass 含义相同。如果设置,覆盖javaModelGenerator值 |
rootInterface | 和javaModelGenerator中rootInterface 含义相同。如果设置,覆盖javaModelGenerator值 |
runtimeCatalog | 如果您为此属性指定一个值,则MBG将使用该值作为生成的SQL中的catalog ,而不是上面配置的catalog 。如果您要针对一个目录生成代码,但想在运行时使用其他目录,则此功能很有用。 |
runtimeSchema | 如果您为此属性指定一个值,则MBG将使用该值作为生成的SQL中的schema ,而不是上面配置的schema 。如果您要针对一个模式生成代码,但想在运行时使用其他模式,则此功能很有用。 |
runtimeTableName | 如果您为此属性指定一个值,则MBG将使用该值作为生成的SQL中的表名,而不是 上面配置的tableName 。如果要生成对象以使用公共同义词,这在Oracle上特别有用。在这种情况下,您将需要根据同义词指向的实际表生成对象,然后在此属性中指定同义词名称。 在大多数情况下,还应该使用公共同义词指定ignoreQualifiersAtRuntime 属性。 |
useActualColumnNames | 此属性可用于指定将添加到selectAll 方法的order by子句。仅在使用MyBatis3Simple 目标运行时时才适用 。MBG将 在该属性中指定的任何内容之前添加order by ,因此该属性应仅包含列列表(例如ID1,ID2 或ID1 desc,ID2 asc ) |
useColumnIndexes | 和javaModelGenerator中useColumnIndexes 含义相同。如果设置,覆盖javaModelGenerator值 |
useCompoundPropertyNames | 如果为true,则MBG将通过污染列名称和列重新放置来使用生成属性名称。这在由第四代语言创建的数据库中很有用,在第四代语言中生成了列名(例如FLD2237),但备注中包含有用的信息(例如“客户ID”)。在这种情况下,MBG将生成FLD2237_CustomerId的属性名称。 |
generatedKey
必填属性:
属性 | 描述 |
---|---|
column | 生成的列的列名。 |
sqlStatement | 将返回新值的SQL语句。如果这是一个标识列,则可以使用预定义的特殊值之一,或用适当的语句替换数据库。预定义的特殊值如下: **DB2:**将转换为:VALUES IDENTITY_VAL_LOCAL() **MySQL:**将转换为:SELECT LAST_INSERT_ID() **SqlServer:**将转换为:SELECT SCOPE_IDENTITY() **JDBC:**这将配置MBG生成代码,以支持MyBatis3支持JDBC标准生成的密钥。这是一种独立于数据库的方法,可从标识列获取值。 其他略。 |
可选属性
属性 | 描述 |
---|---|
identity | 如果为true,则将该列标记为标识列,并且生成的元素将放置在插入之后(对于标识列)。如果为false,则将生成的放置在插入之前(通常用于序列)。 要点:即使将type属性指定为“ post”,对于标识列,仍应将此值指定为“ true”。这将标记MBG从插入列表中删除该列。 默认值为false。 |
type | 如果指定,则此值将作为生成的元素的类型添加。此属性的值应为“ pre”或“ post”。 重要提示:如果为此属性指定一个值,则生成的 元素将始终置于insert语句之前。 |
domainObjectRenamingRule
MyBatis生成器(MBG)使用domainObjectRenamingRule元素重命名数据库表,然后再计算相应的域对象名称。当所有表具有在计算域对象名称之前应删除的公共前缀时,此功能很有用。
必填属性:
searchString : 这是一个正则表达式,用于定义要替换的子字符串。
选填属性:
replaceString : 这是一个替换每次出现的搜索字符串的字符串。如果未指定,则使用空字符串。
columnRenamingRule:
MyBatis生成器(MBG)使用columnRenamingRule元素重命名数据库列,然后再计算内省表中的相应属性名称。当表中的所有列都有一个公共前缀,在计算属性名称之前应将其删除时,这很有用
必填属性:
searchString : 这是一个正则表达式,用于定义要替换的子字符串。
选填属性:
replaceString : 这是一个替换每次出现的搜索字符串的字符串。如果未指定,则使用空字符串。
columnOverride:
MyBatis生成器(MBG)使用columnOverride元素从默认情况下将要计算的值更改自省数据库列的某些属性。
必填属性:
column : 列名。
可选属性:
属性 | 描述 |
---|---|
property | 要使用的Java属性的名称。如果未指定,则MBG将基于列名称生成属性。例如,如果表中有一个名为“ STRT_DTE”的列,则MBG将基于“ useActualColumnNames”属性的值将属性名称生成为“ STRT_DTE”或“ strtDte”。此属性可用于重命名“ startDate”列 |
javaType | 此列的属性的标准Java类型。 如果需要,可以使用它覆盖JavaTypeResolver 计算的类型。 |
jdbcType | 列的JDBC类型(INTEGER,DECIMAL,NUMERIC,VARCHAR等)。 如果需要,可以使用它覆盖JavaTypeResolver 计算的类型。 |
typeHandler | 用户定义的类型处理程序,应用于此列。这应该是一个类,它实现的MyBatis’的全名 类型处理器 接口。如果未指定或为空,则MyBatis将使用默认类型工具来处理类型。 |
delimitedColumnName | 指定是否在生成的SQL中分隔列名。如果名称包含空格,MBG会自动为列名称定界,因此仅当必须将列名称强制为特定情况时,或者当列名称是数据库中的保留字时,才需要使用此覆盖。 如果为“ true”,则替代的column属性必须与从数据库返回的列名的大小写完全匹配。 分隔符在元素上指定 。 默认值为false。但是,MBG会自动定界包含空格的列名,因此在这种情况下不需要覆盖。 |
isGeneratedAlways | 指定该列是否是数据库中的GENERATED ALWAYS列。如果该列始终为GENERATED,则MBG将不会在insert或update语句中引用该列。 |
子标签
property
支持的属性:
trimStrings :此属性用于选择MyBatis Generator是否添加代码以修剪数据库返回的字符字段中的空白。如果您的数据库将数据存储在CHAR字段而不是VARCHAR字段中,则这将很有用。当一个字符字段/列为true时,MyBatis Generator将插入代码以修剪前导和尾随空白。如果在javaModelGenerator 和/或 table级别指定 , 则此属性值将覆盖该属性 。默认值是从javaModelGenerator和/或 javaModelGenerator继承的 ,否则为false。
ignoreColumn:
ignoreColumn元素用于告诉MBG忽略自省表中的列。没有生成的SQL将引用该列,并且不会在模型对象中为该列生成任何属性。该元素是table
元素的可选子元素。
必填属性:
column : 列名。
可选属性:
delimitedColumnName : 如果为true,
则MBG在与数据库返回的列进行匹配时将执行区分大小写的精确匹配。如果为 false
(默认),则该名称不区分大小写。