ibatis自動生成鍵selectkey(Oracle、MYSQL、MSSQL、SQLITE)

咱們在數據庫插入一條數據的時候,常常是須要返回插入這條數據的主鍵。可是數據庫供應商之間生成主鍵的方式都不同。
有些是預先生成(pre-generate)主鍵的,如Oracle和PostgreSQL;有些是過後生成(post-generate)主鍵的,如MySQL和SQL Server。但無論是哪一種方式,咱們均可以用ibatis的節點來獲取語句所產生的主鍵。
mysql


oracle例子:
sql

<insert id="insertProduct-ORACLE" parameterClass="product">  數據庫

    <selectKey resultClass="int" type="pre" keyProperty="id" >  oracle

        SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL  post

    </selectKey>  spa

    insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)  server

</insert>sqlite

sql-server例子:ip

<insert id="insertProduct-MS-SQL" parameterClass="product">  it

    insert into PRODUCT (PRD_DESCRIPTION) values (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select @@IDENTITY as value  

    </selectKey>  

</insert>

mysql例子:

<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>

SQLite例子:
    <insert id="Create" parameterClass="Subject">
      INSERT INTO SUBJECT
      (SubjectName,QuestionCount,IsNowPaper)
      VALUES(#SubjectName#,#QuestionCount#,#IsNowPaper#)
      <selectKey resultClass="int" type="post" property="SubjectId">
        SELECT seq
        FROM sqlite_sequence
        WHERE (name = 'SUBJECT')
      </selectKey>
    </insert>

注意:name = 'SUBJECT'中SUBJECT爲表名稱

相關文章
相關標籤/搜索