最後說明一下在例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中所使用表的別名被用作了根元素的子元素。