由于没搜到相似文章,这是原文翻译稿
MyBatis 生成器生成的 SQL 映射 XML 文件
重要:SQL Map XML 文件不是为 MyBatis3DynamicSQL 运行时生成的。
MyBatis 生成器 (MBG) 生成符合 MyBatis SQL Map DTD 的 SQL Map XML 文件。 这些文件包含许多不同的元素。 MBG 为您指定的每个表生成不同的 SQL Map 文件的 SQL Map 是表的名称(如果存在,则由 schema 和 catalog 限定)。MBG 不会 将 SQL Map 条目添加到 MyBatis 配置文件中 - 你必须手动完成(或者你可以使用 一个插件,如果你愿意,可以让 MBG 生成一个骨架配置文件)。
每个生成的 XML 元素都包含一个 XML 注释部分,该部分包含一个 @mbg.generated 的字符串。在后续运行中,将删除并替换包含带有此字符串的注释的每个元素。XML 文件中的任何其他元素将保持不变。 考虑到这一点,您可以将其他元素添加到文件中,而后续运行不必担心它们丢失,切记不在任何元素注释中包含此字符串。
注意:本文后续术语 “BLOB” 用于指代任何列,数据类型为 BLOB、CLOB、LONGVARCHAR 或 LONGVARBINARY。
Result Map
此元素用于将表列映射到生成的 Java 模型对象的属性。 结果映射(和相应的 select 语句)将不包含:
- 任何已被元素忽略的字段
- 表中的任何 BLOB 字段(请参阅带有 BLOBs 元素的结果映射)
如果存在,将对于特定列根据配置映射。如果不存在,则默认属性名称和 JDBC 类型将被使用
您可以编写代码来扩展此结果映射 SQL 映射中的自定义联接查询。这是一个常见的case。 如果您计划复用此结果映射与其他连接查询,并希望MBG 为结果映射中的字段生成前缀的话看<table>参考页找有关生成前缀的内容。
如果有select by example 或 select by primary key ,这个表就会创建。
Result Map With BLOBs
该元素扩展基本结果映射,并添加表中存在的任何 BLOB 字段。 我们这样做是因为我们提供不同版本的 select by example 语句,具体取决于 是否要在这些查询中返回 BLOB 字段。
结果映射(和相应的 select 语句)将不包含:
- 任何已被元素忽略的字段
如果存在,将对于特定列根据配置映射。如果不存在,则默认属性名称和 JDBC 类型将被使用
您可以编写代码来扩展此结果映射 SQL 映射中的自定义联接查询。这是一个常见的case。 如果您计划复用此结果映射与其他连接查询,并希望MBG 为结果映射中的字段生成前缀的话看<table>参考页找有关生成前缀的内容。
如果有select by example 或 select by primary key ,将生成此元素。
SQL Where Clause
此元素包含一个可重用的 where 子句,该子句由 “by example” 方法使用。这 where 子句将不包含任何 BLOB 字段(如果表中存在这些字段)。大多数数据库不会 支持 WHERE 子句中的 BLOB 字段。
如果启用任何 “by example” ,将生成此元素。
Select By Primary Key
此元素包含一个 select 语句,该语句将返回一行 - 由主键指定。 返回的行将包括 BLOB 字段(如果表中存在这些字段)。
如果表具有主键和 select by primary key 语句,将生成此元素。
Select by Example
此元素包含一个 select 语句,其中的行与示例对象匹配。 这实现了一个简单的 “query by example” 功能,可用于生成许多不同的数据库查询。返回的行将不包含表中存在的任何 BLOB 字段 (请参阅下面的 select by example with BLOBs 语句)。
重要:如果示例类为 null,或者未设置任何条件,则选择表中的所有行。
如果启用了 select by example 语句,则会生成此元素。
Select by Example With BLOBs
此元素包含一个 select 语句,其中的行与示例对象匹配。 这实现了一个简单的 “query by example” 功能,可用于生成许多不同的数据库查询。返回的行将包括表中存在的任何 BLOB 字段。
重要:如果示例类为 null,或者未设置任何条件,选择表中的所有行。
如果表包含 BLOB 字段,则将生成此元素,并且上一条也会启用。
Insert
此元素是一个 insert 语句,它包含表中的所有字段(包括 BLOB), 除非使用 忽略了该字段元素。
如果表具有自动生成的键(序列中的标识列或值),并且指定了 ,则 MBG 将生成 适当的 元素。
重要提示:该方法将返回插入的行数(通常为 0 或 1)。 如果指定了 元素,则新生成的 key 将在 parameter object 的相应属性中设置。
如果启用了 insert 语句,则会生成此元素。
Insert Selective
此元素是一个 insert 语句,它包含表中的所有字段(包括 BLOB), 除非使用 忽略了该字段元素。但是,此语句将不包括参数为空的对象。这允许您对列使用数据库默认值(如果存在)。 此元素不允许将空值插入到任何字段中 - 为此 您必须使用常规的 INSERT 语句。
重要:映射到 Java 原语的任何字段 始终通过此方法插入。
如果表具有自动生成的键(序列中的标识列或值),并且指定了 ,则 MBG 将生成 适当的 元素。
重要提示:该方法将返回插入的行数(通常为 0 或 1)。 如果指定了 元素,则新生成的 key 将在 parameter object 的相应属性中设置。
如果启用了 insert 语句,则会生成此元素。
Update By Primary Key
此元素是一个 update 语句,它将根据主键更新一行。update 语句将更新表中的所有字段,除非:
- 该字段已被忽略
- 该字段是 BLOB 字段(请参阅使用 BLOBs 元素按主键更新)
如果表具有主键,并有update by primary key 语句,则会生成此元素。
Update By Primary Key With BLOBs
此元素是一个 update 语句,它将根据主键更新一行。update 语句将更新表中的所有字段(包括 BLOB 字段),除非:
- 该字段已被忽略
如果表具有主键和BLOB列,并有 update by primary key 语句,则会生成此元素。
Update By Primary Key Selective
此元素是一个 update 语句,它将根据主键更新一行。update 语句将仅更新表中属性非空的列。此语句可用于更新记录中的某些列,但不影响记录中的所有列。重要提示:如果该列已映射到原始类型,则该列将始终为 更新。
如果表具有主键,并有update by primary key 语句,则会生成此元素。
Delete By Primary Key
此元素是一个 delete 语句,它将根据主键删除表中的一行。
如果表具有主键,并且按主键删除,则将生成此元素。
Delete By Example
此元素是一个 delete 语句,它将由 example 对象删除表中的一行或多行。
重要:如果示例类为 null,或者未设置任何条件,则表中的所有行都将被删除。
如果启用了 delete by example 语句,则会生成此元素。
Count By Example
此元素是一个 select count(*) 语句,它将返回表中的行数匹配的count值。
重要:如果示例类为 null,或者未设置任何条件,则返回整个表中的行数。
如果启用了 count by example 语句,则会生成此元素。
Update By Example
此元素是一个 update 语句,它将更新表中匹配条件的所有行。update 语句将更新表中的所有字段,除非:
- 该字段已被忽略
- 该字段是 BLOB 字段(请参阅使用 BLOBs 元素按主键更新)
重要:如果示例类为 null,或者未设置任何条件,则表中的所有行都将更新。
如果启用了 update by example 语句,则会生成此元素。
Update By Example With BLOBs
此元素是一个 update 语句,它将更新表中匹配条件的所有行。update 语句将更新表中的所有字段(包括 BLOB 字段) 除非:
- 该字段已被忽略
重要:如果示例类为 null,或者未设置任何条件,则 然后,表中的所有行都将更新。
如果表包含 BLOB 列,并有example 语句,则会生成此元素。
Update By Example Selective
此元素是一个 update 语句,它将更新表中与指定示例匹配的行。update 语句将仅更新表中对应的属性为非 null的行。此语句可用于更新某些记录中的某些列,而不会影响记录中的所有列。
重要提示:如果该列已映射到原始类型,则该列将始终为更新。
重要:如果示例类为 null,或者未设置任何条件,则表中的所有行都将更新。
如果启用了 update by example 语句,则会生成此元素。