最后说明一下在例12.2中没有出现、但比较重要的特性。
1.利用<insert>元素来生成自动主键
在IBatis框架中可以利用数据库原有的特性来生成自动主键。比如常见的用法:用sequence来生成主键的示例,这是一个预生成的主键。
<insert id="insertByAutoPK" parameterClass="test.sample.User">
<selectKey resultClass="int" keyProperty="id" >
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
</selectKey>
insert into USER (USER_ID,USER_NAME)
values (#id#,#userName#)
</insert>
另一常见的用法:利用identity来生成主键的示例,这是一个后生成的主键。
<insert id="insertByAutoPK" parameterClass="test.sample.User">
insert into USER (USER_NAME)
values (#userName#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
2.xmlResultName属性来返回XML文档
在<select>、<statement>元素和<procedure>元素中,都可以使用xmlResultName属性来实现将结果集写到XML文档的功能。
<select id="getUser"
parameterClass="int"
resultClass="xml"
xmlResultName="user">
SELECT USER_ID as id,
USER_NAME as userName,
USER_SEX as userSex,
FROM USER
WHERE USER_ID = #userId#
</select>
执行完成后,会生成如下的XML文档。
<user>
<id>1</id>
<userName>RW</userName>
<userSex>M</userSex>
</user>
可以看到,resultClass属性被定义成了“xml”,这是必需的。xmlResultName属性所定义的值被用作XML文档的根元素,而select中所使用表的别名被用作了根元素的子元素。