iBatis使用SqlMapClient.insert()执行插入语句,这个方法返回一个Object,代表插入的主键值。但如果想得到这个值,必须在<insert>元素中进行另外的配置。在iBatis中文文档的20页中有提到,也可以直接搜索”selectKey”。
主键值的获取支持两种方式,前获取和后获取,如中文文档中例子写的那样。前获取需要把selectkey元素放在前面,后获取反之。
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)
insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
SELECT @@IDENTITY AS ID
DB2的资料比较少,我试了很多次才搞出来,类似于SQL Server,对于使用了IDENTITY的Column:
INSERT INTO PRODUCT (PRD_DESCRIPTION) VALUES (#description#)
SELECT distinct IDENTITY_VAL_LOCAL() AS ID FROM PRODUCT
keyProperty属性必须对应于SQL语句中SELECT出来的Column Alias,在本例中均为“id”