mybatis(六): 代码生成器

代码生成器

参考官方文档

代码生成器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很少 。 MyBatis3KotlinMyBatis3DynamicSqlV1:略
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+功能。例如,用于集合实例化的菱形运算符。
有效值为truefalse。默认值为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.DatetoString()方法。 Warning:如果preventAllComments选项为true,则将忽略此选项。 Warning: 如果preventDate选项为true,则将忽略此选项。
4.4 connectionFactory

connectionFactory元素用于指定连接工厂,以获取内省表所需的数据库连接。MyBatis Generator使用JDBC的DatabaseMetaData类来发现您在配置中指定的表的属性。每个context元素都需要一个connectionFactoryjdbcConnection元素。

可选属性:

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元素都需要一个connectionFactoryjdbcConnection元素。

必填属性:

属性描述
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尝试自动处理数据库标识符的区分大小写。在大多数情况下,无论您为catalogschematableName 属性指定了什么,MBG都能找到表。MBG的过程遵循以下步骤:

  1. 如果catalogschematableName属性中的任何一个都包含空格,则MBG将根据指定的确切大小写查找表。在这种情况下,MBG将自动在生成的SQL中定界表标识符。

  2. 否则,如果数据库报告标识符存储为大写,则MBG会自动将任何表标识符转换为大写。

  3. 否则,如果数据库报告标识符存储为小写,则MBG会自动将任何表标识符转换为小写。

  4. 其他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将附加到生成器配置中指定的目标包。
mapperNameMyBatis3生成的映射器类和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
modelTypecontext中的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

属性描述
constructorBasedjavaModelGeneratorconstructorBased含义相同。如果设置,覆盖javaModelGenerator
ignoreQualifiersAtRuntime默认值false,如果为true,生成的SQL中的表名将不会包含schema和catalog前缀。
immutablejavaModelGeneratorimmutable含义相同。如果设置,覆盖javaModelGenerator
modelOnly此属性用于选择MBG是否仅为表生成模型类。
如果为true,则不会生成Java客户端。如果配置了并将此属性设置为true,则MBG将仅在SQL Mapper XML文件中为此表生成结果映射元素。

如果为true,则此值将覆盖元素上的任何“ enable *”属性-将不会生成CRUD方法。

默认值为false。
rootClassjavaModelGeneratorrootClass含义相同。如果设置,覆盖javaModelGenerator
rootInterfacejavaModelGeneratorrootInterface含义相同。如果设置,覆盖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,ID2ID1 desc,ID2 asc
useColumnIndexesjavaModelGeneratoruseColumnIndexes含义相同。如果设置,覆盖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(默认),则该名称不区分大小写。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值