<generatedKey> 元素

<generatedKey> 元素用来指定自动生成主键的属性(identity字段或者sequences序列)。 如果指定了这个元素,MyBatis Generator (MBG)会在生成insert的SQL映射文件中插入一个合适的 <selectKey> 元素。 这个元素是 <table> 元素的一个可选的子元素。

必选属性

属性 描述
column 生成列的列名。
sqlStatement 将返回新值的 SQL 语句。如果这是一个identity列,您可以使用其中一个预定义的的特殊值。 或者为您的数据库使用一个合适的语句。 预先定义好的特殊值如下:
Cloudscape 这将转化为: VALUES IDENTITY_VAL_LOCAL()
DB2 这将转化为: VALUES IDENTITY_VAL_LOCAL()
DB2_MF 这将转化为:
SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1

为运行在zOS(主框架)或者有些情况是iSeries (AS/400)上的DB2数据库使用该值

Derby 这将转化为: VALUES IDENTITY_VAL_LOCAL()
HSQLDB 这将转化为: CALL IDENTITY()
Informix 这将转化为: select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
MySql 这将转化为: SELECT LAST_INSERT_ID()
SqlServer 这将转化为: SELECT SCOPE_IDENTITY()
SYBASE 这将转化为: SELECT @@IDENTITY
JDBC 这会配置MBG使用MyBatis3支持的JDBC标准的生成key来生成代码。 这是一个独立于数据库获取标识列中的值的方法。

重要: 只有当目标运行为MyBatis3时才会产生正确的代码。 如果与iBATIS2一起使用目标运行时会产生运行时错误的代码。

可选属性

属性 描述
identity 当设置为 true 时,该列会被标记为identity列, 并且 <selectKey> 元素会被插入在insert后面。 当设置为 false 时, <selectKey> 会插入到insert之前(通常是序列)。

重要: 即使您 type 属性指定为"post", 您仍然需要为 identity 列将该参数设置为 "true"。 这将标志MBG从插入列表中删除该列。

默认值是 false.

type 如果指定,则此值将被添加为生成selectKey元素的类型。 此属性的值应该是"pre"或"post"。

重要: 如果指定此属性的值,然后生成selectKey元素将永远被放置在insert语句之前。

子元素