iBATIS自動生成主鍵(oracle,sqlserver,mysql)
?
我們在數據庫插入一條數據的時候,經常是需要返回插入這條數據的主鍵。但是數據庫供應商之間生成主鍵的方式都不一樣。
有些是預先生成(pre-generate)主鍵的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主鍵的,如MySQL和SQL Server。但是不管是哪種方式,我們都可以用iBATIS的節點來獲取語句所產生的主鍵。
例子如下:
假設我的數據庫表為PRODUCT (PRD_ID,PRD_DESCRIPTION)。
xml 代碼
<!-- oracle Example -->
<insert id="insertProduct-ORACLE" parameterClass="product">??
??? <selectKey resultClass="int" type="pre" keyProperty="id" >??
??????? SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL??
??? </selectKey>??
??? insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)??
</insert>??
??
<!-- Microsoft SQL Server IDENTITY Column Example -->??
<insert id="insertProduct-MS-SQL" parameterClass="product">??
??? insert into PRODUCT (PRD_DESCRIPTION)??
??? values (#description#)??
??? <selectKey resultClass="int" type="post" keyProperty="id" >??
??????? select @@IDENTITY as value??
??? </selectKey>??
</insert>??
??
<!-- MySQL Example -->??
<insert id="insertProduct-MYSQL" parameterClass="product">??
??? insert into PRODUCT (PRD_DESCRIPTION)??
??? values (#description#)??
??? <selectKey resultClass="int" type="post" keyProperty="id" >??
??????? select LAST_INSERT_ID() as value??
??? </selectKey>??
</insert>?
?
posted on 2009-01-08 17:19 李云澤 閱讀(1544) 評論(0) 編輯 收藏 所屬分類: ibatis